### weakestOsuPlayer_244's blog

By weakestOsuPlayer_244, history, 4 years ago,

Hello guys.

I was trying the problem https://mirror.codeforces.com/contest/182/problem/D

The intended complexity of my solution is supposed to be $O(n\sqrt{n})$ but somehow I was repeatedly getting TLE. When I switched the concerned part where I was using + for concatenation of two strings with append it got accepted.

I went over to stackoverflow for figuring out the cause but I couldn't understand much of it besides trying the reserve keyword. I also tried using the reserve keyword for reserving space for the string but it resulted in TLE as well.

Here are my submissions:-

https://mirror.codeforces.com/contest/182/submission/82677975 -Using + for concatenation.

 » 4 years ago, # | ← Rev. 2 →   +3 Using temp1=temp1+temp2 takes O(n) as it copies the first string, adds the second to it and then stores it back in first Edit: Someone please correct me in the comments if I am wrong
•  » » 4 years ago, # ^ |   +3 It's probably O(n) for a single operation but repeating it over and over seems to tend towards higher complexity. (Otherwise my code would have gotten accepted)I think so..
 » 4 years ago, # |   +7 Basically s=s+t creates a new object by copy s, then appends t, then moving the result to s. s+=t simply appends t, without copying s.
•  » » 4 years ago, # ^ |   +4 Thanks
 » 4 years ago, # |   +4 If there are 'n' strings of length 'x' then time complexity of concatenation will be O(x*n^2). Appending gives a linear time complexity.
 » 4 years ago, # | ← Rev. 2 →   +4 I ran and got AC with your code by replacing a=a+b with a+=b. The runtime difference is strikingly large. The AC submission ran for just 124ms
•  » » 4 years ago, # ^ |   +4 Yes thanks for your reply. I changed it and it got AC too. Using a+=b; probably prevents creation of the new object as stated above by spookywooky.