In solution of http://codeforces.me/problemset/problem/375/D
consider struct qry { int l,r,id,val; int block; }; vector<qry> Q; vector<int> q_idx;
http://codeforces.me/contest/375/submission/26098047 this solution got AC , it used
sort(Q.begin(),Q.end(),[](qry &A,qry &B)
{
if( A.block == B.block )
return A.r < B.r;
return A.block < B.block;
});
whereas
http://codeforces.me/contest/375/submission/26097714 this solution got TLE using
bool operator()(int x,int y)
{
if( Q[x].block == Q[y].block )
return Q[x].r < Q[y].r;
return Q[x].block < Q[y].block;
}
sort(q_idx.begin(),q_idx.end(),*this); // q_idx is vector<int> containing indices
Can anyone explain why this happened ?