8 条题解

  • 0
    @ 2025-4-1 20:58:06
    #include <iostream>
    using namespace std;
    
    int a[1000010];
    
    int main() {
        cin.tie(0);
        cout.tie(0);
    
        long long n, m, max = -1, u = 0, x = 0;
    
        cin >> n >> m;
        for (int i = 1; i <= n; i++) {
            cin >> a[i];
            if (max < a[i]) {
                max = a[i];
            }
        }
    
        long long l = 0, r = max;
    
        while (l <= r) {
            u = 0;
            int mid = (l + r) / 2;
    
            for (int i = 1; i <= n; i++) {
                if (a[i] > mid) {
                    u += a[i] - mid;
                }
            }
    
            if (u >= m) {
                x = mid;
                l = mid + 1;
            } else {
                r = mid - 1;
            }
        }
    
        cout << x;
        return 0;
    }
    

    信息

    ID
    89
    时间
    1000ms
    内存
    256MiB
    难度
    7
    标签
    递交数
    1686
    已通过
    363
    上传者