lower_bound查找序列中的第一个出现的值大于等于val的位置
int lower_bound(int *array,int l,int r,int targte){
while(l<=r){
int mid=(l+r)/2;
if(array[mid]<target)l=mid+1;
else r=mid-1;
}
return l;
}
upper_bound返回的是最后一个大于val的位置
int upper_bound(int *array,int l,int r,int target){
while(l<=r){
int mid=(l+r)/2;
if(array[mid]<=target)l=mid+1;
else r=mid-1;
}
return l;
}