二分答案

    int l, r, ans;
    bool check(int);
    while (l <= r) {
        int mid = l + (r - l) / 2;
        if (check(mid)) {
            ans = mid;
            // l 和 r 取决于方向
            l = mid + 1;
        } else {
            r = mid - 1;
        }
    }