我在 P7167 里写了两个二分,一个过了,一个没过。
想问问这两个二分哪里有区别。
//AC
int l = i + 1, r = n + 1, mid;
while(l < r)
{
mid = (l + r) >> 1;
if(RMQ(i + 1, mid) <= d[i]) l = mid + 1;
else r = mid;
}
//WA
int l = i + 1, r = n + 1, mid, ans = 0;
while(l <= r)
{
mid = (l + r) >> 1;
if(RMQ(i + 1, mid) <= d[i]) l = mid + 1, ans = mid;
else r = mid - 1;
}