Getting TLE. Help!

PROBLEM CODE: Contest Page | CodeChef
My code:
#include <bits/stdc++.h>
using namespace std;

int main() {
long long int t;
cin>>t;
while(t–) {
long long int a,b,m=INT_MIN;
cin>>a>>b;
long long int p = min(a,b);
long long int n = max(a,b);
long long int r1,r2,r;
for(long long int i=p;i<=n;++i) {
r1 = ceil(((b-i)/2.0));
r2 = ceil(((i-a)/2.0));
r = r1+r2;
if(r>m) {
m = r;
r=0;

        }
    }
    cout<<m<<endl;
}
return 0;

}
Though this is working for sample test case but showing TLE. Please help.

Given constraints are 1 to 10^9. O(N) would not work for anything greater than 10^8. Others can correct me if I’m wrong.

so is there any way to correct this ?

I don’t think so. I suggest you think of a different approach.

There is a way to solve each test case using just one operation. Think for a while by taking some sample cases. There is just a bit of casework involved. If you can figure it out then great otherwise the editorial has already been posted.

1 Like

You need not check for all the numbers right,
check for all possible cases i.e A>B, A<B, A=B
And find how would you consider taking the k value for each case!