//二分稍微总结一下
//找x的前驱和x,保证所取x值为左边界(最小排名)
int l = 0;
int r = a.size() - 1;
while(l < r)
{
int mid = l + (r - l + 1) / 2;
if(a[mid] <= grades) l = mid;
else r = mid - 1;
}
//找x的后继和x,为右边界(最大排名)
int l = 0;
int r = a.size();
while(l < r)
{
int mid = l + (r - l ) / 2;
if(a[mid] >= grades) r = mid;
else l = mid +1;
}