Hello folks! I am new to codeforces and this was my first problem. I was trying powerful arrays http://mirror.codeforces.com/problemset/problem/86/D problem.↵
↵
I used MO's algorithm to solve it. ↵
↵
My first approach was this **http://mirror.codeforces.com/contest/86/submission/24070204**↵
↵
But this got TLE on test case 43. Now when I made a different function checkAns(); in my next submission http://mirror.codeforces.com/contest/86/submission/24070298 , it got AC..↵
↵
All I changed was I put ↵
↵
L=queries[i].L;↵
R=queries[i].R;↵
↵
while(currentL<L){↵
del(currentL);↵
currentL++;↵
};↵
while(currentL>L){↵
add(currentL-1);↵
currentL--;↵
};↵
↵
while(currentR<R){↵
add(currentR+1);↵
currentR++;↵
};↵
while(currentR>R){↵
del(currentR);↵
currentR--;↵
};↵
↵
this part of my code in a separate function checkAns(i); I am not getting how this got AC if earlier one was getting TLE. Also isn't function call increases time taken?? Please mention if there is something different on codeforces' platform.↵
↵
Thanks in advance :) ↵
↵
EDIT:: ↵
I submitted different forms of my code for around 20 times in this question. What I saw is that time taken in this question changes abruptly even on subtle changes in code.↵
↵
For example I changed ll to int in http://mirror.codeforces.com/contest/86/submission/21756475 code for some arrays and numbers except answer and ans[N] ( http://mirror.codeforces.com/contest/86/submission/24079499 ) and it got AC. ↵
↵
When I was doing it, I removed #include <bits/stdc++.h> from my code and time reduced to 2240 from 3630 ms. I think it takes pretty neat and to the point code at Codeforces otherwise these things shouldn't matter.
↵
I used MO's algorithm to solve it. ↵
↵
My first approach was this **http://mirror.codeforces.com/contest/86/submission/24070204**↵
↵
But this got TLE on test case 43. Now when I made a different function checkAns(); in my next submission http://mirror.codeforces.com/contest/86/submission/24070298 , it got AC..↵
↵
All I changed was I put ↵
↵
L=queries[i].L;↵
R=queries[i].R;↵
↵
while(currentL<L){↵
del(currentL);↵
currentL++;↵
};↵
while(currentL>L){↵
add(currentL-1);↵
currentL--;↵
};↵
↵
while(currentR<R){↵
add(currentR+1);↵
currentR++;↵
};↵
while(currentR>R){↵
del(currentR);↵
currentR--;↵
};↵
↵
this part of my code in a separate function checkAns(i); I am not getting how this got AC if earlier one was getting TLE. Also isn't function call increases time taken?? Please mention if there is something different on codeforces' platform.↵
↵
Thanks in advance :) ↵
↵
EDIT:: ↵
I submitted different forms of my code for around 20 times in this question. What I saw is that time taken in this question changes abruptly even on subtle changes in code.↵
↵
For example I changed ll to int in http://mirror.codeforces.com/contest/86/submission/21756475 code for some arrays and numbers except answer and ans[N] ( http://mirror.codeforces.com/contest/86/submission/24079499 ) and it got AC. ↵
↵
When I was doing it, I removed #include <bits/stdc++.h> from my code and time reduced to 2240 from 3630 ms. I think it takes pretty neat and to the point code at Codeforces otherwise these things shouldn't matter.