Submission #1216749

#TimeUsernameProblemLanguageResultExecution timeMemory
1216749takoshanavaRice Hub (IOI11_ricehub)C++20
0 / 100
0 ms320 KiB
#include <bits/stdc++.h>
//#define int long long
#define pb push_back
#define fs first
#define sc second
#include "ricehub.h"
using namespace std;

int besthub(int r, int l, int x[], long long b) {
    vector<long long> pref(r + 1, 0);
    for (int i = 0; i < r; i++) {
        pref[i + 1] = pref[i] + x[i];
    }

    int ans = 1;
    int ll = 1, rr = r;

    while (ll <= rr) {
        int mid = (ll + rr) / 2;
        bool ok = false;

        for (int i = 0; i + mid <= r; ++i) {
            int s = i;
            int t = i + mid - 1;
            int p = (s + t) / 2;
            int rp = x[p];

            int lcnt = p - s;
            long long lsum = pref[p] - pref[s];

            int rcnt = t - p;
            long long rsum = pref[t + 1] - pref[p + 1];

            long long cost = (rp * lcnt - lsum) + (rsum - rp * rcnt);

            if (cost <= b) {
                ok = true;
                break;
            }
        }

        if (ok) {
            ans = x[mid - 1];
            ll = mid + 1;
        } else {
            rr = mid - 1;
        }
    }

    return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...