int BSearch()
{
int ln(1),rn(n+1);
while(ln+1<rn)
{
int mid=(ln+rn)>>1;
if (Check(mid))
{
ln=mid;
//mid符合标准,区间变为[mid,rn)
}
else
{
rn=mid;
//区间变为[ln,mid)
}
}
//结束的区间为[ln,ln+2)
if (Check(ln+1))
return ln+1;
else
return ln;
}
实现的很不优美...但是不知道如何不加最后的IF而做到返回>val的最小下标