二分法计算错误
二分代码出错,使用upper_bound()正确
while(l<r)
{
int mid = l + r + 1>> 1;
if(a[mid]<=x)
l = mid;
else r = mid - 1;
}
int l0=upper_bound(a+1, a+n+1, x)-a-1;
while(l<r)
{
int mid = l + r + 1>> 1;
if(a[mid]<=x)
l = mid;
else r = mid - 1;
}
int l0=upper_bound(a+1, a+n+1, x)-a-1;