Almost same code but one got TLE and one AC.

Правка en2, от imposter_syndrome, 2017-01-23 22:49:32

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 ansN 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.

История

 
 
 
 
Правки
 
 
  Rev. Язык Кто Когда Δ Комментарий
en3 Английский imposter_syndrome 2017-01-23 22:50:20 5
en2 Английский imposter_syndrome 2017-01-23 22:49:32 625
en1 Английский imposter_syndrome 2017-01-23 15:35:17 1112 Initial revision (published)