int l = 0, r = n - 1; while (l < r) { int mid = l + r >> 1; if (q[mid] >= x) r = mid; else l = mid + 1; } //l==r; //stl: l = lower_bound(q,q+n,x)-a;
下标从0开始,求大于x的第一个数的下标。