By adityagamer_alt, history, 7 weeks ago,

• +1

 » 7 weeks ago, # |   +3 a[i+1] out of bounds.
•  » » 7 weeks ago, # ^ |   0 This won't happen because before that there is an or statement i+1 == n, when this will be true the a[i+1] statement will never run.
•  » » » 7 weeks ago, # ^ |   0 Have you noticed $x \le 10^{18}$?
•  » » » » 7 weeks ago, # ^ |   0 Yeah, I noticed. This won't make any problem.
 » 7 weeks ago, # | ← Rev. 3 →   0 Your code seems to have a lot of issues, I just fixed it for runtime errors.Shadowed declaration string a; and auto mul = [&] (int a, int b).Can be divide by 0 int t = x/prod[i];.What if prod is empty prod.back() = 1;Can be accessed out of bound forn(_, take[i])Can be overflow int ans = A * b;
•  » » 7 weeks ago, # ^ | ← Rev. 2 →   0 Thanks for replying. This prod[i] cannot be zero. I fixed the prod.back.forn(_, take[i]) canot overflowI have handled overflow using the gfg method. Is not this corrrect?
•  » » » 7 weeks ago, # ^ |   0 I am not reviewing your logic, I just pointing out some code that has a potential runtime error.I see you create vector here with size of vector "cnt" vi prod(sz(cnt));. If cnt is an empty vector, prod is also an empty vector. ExampleIn problem constraint, k can be zero, cur always 0 so cnt will have no element if(a[i] == '*') cur += k; if(a[i] == 'a' || i+1 == n || a[i+1] == 'a'){ if(cur != 0) cnt.pb(cur); cur = 0; am.pb(a[i]); } prod is empty at this point and prod.back() will give an errorIn this code forn(_, take[i]), I see that you increase i in the outter loop and try to access the element take[i] without checking the size which can be out of bound. A counter-example would be k = 0 -> vector take is empty -> take[i] will give an error.This is a submission link that I try to fix your runtime error Submission. The overflow still exists, I don't know what method you use to handled overflow but it seems not working
•  » » » » 7 weeks ago, # ^ | ← Rev. 2 →   0 https://godbolt.org/z/7PvxGxKxKNotice that compiler generate just imul instruction.In c++ integer overflow (int ans = a * b) is UB. And because it is UB, compiler think "why b == 0 || ans / b == a would not be true?" and just not generate such instructions.Now its MLE:) 162639237
•  » » » » » 6 weeks ago, # ^ | ← Rev. 2 →   0 Thank you so much bro. I copied the code to handle overflow from GFG. What do u use to handle overflow during multiplication?