Submission #1210909

#TimeUsernameProblemLanguageResultExecution timeMemory
1210909ofozRice Hub (IOI11_ricehub)C++20
68 / 100
8 ms1096 KiB
#include <bits/stdc++.h>
using namespace std;

int besthub(int n, int m, int a[], long long b) {
    vector<int> prfx(n);
    prfx[0] = a[0];
    for (int i = 1; i < n; ++i) {
        prfx[i] = prfx[i - 1] + a[i];
    }

    auto getPrfx = [&](int l, int r) -> int {
        if (l > r) return 0;
        int left = (l == 0) ? 0 : prfx[l - 1];
        int right = prfx[r];
        return right - left;
    };

    int res = 1;
    int l = 0, r = 0;
    while (r < n) {
        int mid = (l + r) / 2;
        int s = getPrfx(l, r) - a[mid];
        int s1 = getPrfx(l, mid - 1);
        int s2 = getPrfx(mid + 1, r);
        int d1 = mid - l;
        int d2 = r - mid;
        int score = s2 - 1LL * d2 * a[mid] + (1LL * d1 * a[mid] - s1);
        if (score <= b) {
            res = max(res, r - l + 1);
            ++r;
        } else {
            ++l;
        }
    }

    return res;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...