查找第一个大于等于x的下标
int FirstGE_binary(int l,int r,int x,int a[])
{
int ans = -1;
while(l <= r){
int mid = (l + r) >> 1;
if (a[mid] < x) l = mid + 1;
else {
r = mid - 1;
ans = mid;
}
}
return ans;
}
查找第一个大于x的下标
int FirstG_binary(int l,int r,int x,int a[])
{
int ans = -1;
while(l <= r){
int mid = (l + r) >> 1;
if (a[mid] <= x) l = mid + 1;
else {
r = mid - 1;
ans = mid;
}
}
return ans;
}
最后一个小于等于x的下标*
int LastLE_binary(int l,int r,int x,int a[])
{
int ans = -1;
while(l <= r){
int mid = (l + r) >> 1;
if (a[mid] > x) r = mid - 1;
else {
l = mid + 1;
ans = mid;
}
}
return ans;
}
最后一个小于x的下标
int LastL_binary(int l,int r,int x,int a[])
{
int ans = -1;
while(l <= r){
int mid = (l + r) >> 1;
if (a[mid] >= x) r = mid - 1;
else {
l = mid + 1;
ans = mid;
}
}
return ans;
}