请注意重复数字对排名带来的影响 以下两种二分结果是不一样的:
int get_val(int L,int R,int v){
int l=0,r=1e8,mid,res=0;
while(l<=r){
mid=(l+r)>>1;
int num=get_rank(1,L,R,mid)+1;
if(num<=v){
l=mid+1;
res=mid;
}else{
r=mid-1;
}
}
return res;
}
int get_val(int L,int R,int v){
int l=0,r=1e8,mid,res=0;
while(l<=r){
mid=(l+r)>>1;
int num=get_rank(1,L,R,mid)+1;
if(num>=v){
r=mid-1;
res=mid;
}else{
l=mid+1;
}
}
return res;
}
后者会因为重复元素在边界处出锅,WA10pts