// 右侧符合答案 intbsearchR(int l, int r) { while (l < r) { int mid = l + r >> 1; if (check()) r = mid; // 注意:当 check() 成功后,变换规则: r = mid 时,mid = l + r + 1 >> 1 else l = mid + 1; }
// 左侧符合答案 intbsearchL(int l, int r) { while (l < r) { int mid = l + r + 1 >> 1; if (check()) l = mid; // 注意:当 check() 成功后,变换规则: l = mid 时,mid = l + r + 1 >> 1 else r = mid - 1; }