莫队卡常
分块大小改为n的2/3次方
int block = (int)pow(n,2.0/3.0);
当两个查询左端点在相同块时
如果左端点所在块是奇数块,则右端点按升序排序
否则,右端点按降序排序
if(idx[a.l]!=idx[b.l]){
return idx[a.l]<idx[b.l];
}
if(idx[a.r]!=idx[b.r]){
if(idx[a.l]&1){
return idx[a.r]<idx[b.r];
}else return idx[a.r]>idx[b.r];
}

浙公网安备 33010602011771号