Submission #1360893

#TimeUsernameProblemLanguageResultExecution timeMemory
1360893waygonzRice Hub (IOI11_ricehub)C++20
100 / 100
6 ms2372 KiB
#include "ricehub.h"
#include <bits/stdc++.h>
#define ll long long

using namespace std;

int besthub(int N, int L, int X[], long long B) {
    vector<ll> a(N+1), p(N+1);
    for (int i = 1; i <= N; i++) a[i] = X[i-1];
    for (int i = 1; i <= N; i++) p[i] = p[i-1] + a[i];
    int l = 0, r = N;
    while (l < r) {
        int mid = (l + r + 1) / 2, idx = -1;
        int c1 = (mid - 1) / 2, c2 = mid / 2;
        ll cost = LLONG_MAX;
        for (int i = 1; i + mid - 1 <= N; i++) {
            ll md = (a[i+c1] + a[i+c2]) / 2;
            // [i, i+c1], [i+c1, i+mid-1];
            ll ls = p[i+c1] - p[i-1];
            ll rs = p[i+mid-1] - p[i+c1];
            ll c = 1LL * (c1+1) * md - ls - 1LL * (mid-c1-1) * md + rs;
            cost = min(cost, c);
        }
        if (cost > B) r = mid - 1;
        else l = mid;
    }
    return l;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...