int l=1,r=n;
while(l<r){
int mid=l+r>>1; //左偏
if(check(mid)) r=mid; //check判断mid是否满足性质
else l=mid+1;
}
int l=1,r=n;
while(l<r){
int mid=l+r+1>>1; //右偏
if(check(mid)) l=mid;
else r=mid-1;
}
while(r-l>1e-5){ //精度控制
double mid=(l+r)/2;
if(check(mid)) l=mid;
else r=mid;
}