Submission #1299725

#TimeUsernameProblemLanguageResultExecution timeMemory
1299725polishprogrammerRice Hub (IOI11_ricehub)C++20
0 / 100
0 ms332 KiB
#include <bits/stdc++.h>
#include "ricehub.h"
using namespace std;
#define ll long long
#define fi first
#define se second
#define pb push_back
vector<ll> arr, pre, suf;
int n;
bool czy(int ile, ll b, int l) {
    for (int i = 1; i <= n; i++) {
        if (i - ile / 2 > 0 and i + (ile - 1) / 2 <= n) {
            ll kosztpr = pre[i + (ile-1)/2] - pre[i] - (ile-1)/2*arr[i];
            ll kosztlw = suf[n - i + ile/2 + 1] - suf[n - i + 1] - ile/2*(l-arr[i]);
            if (kosztpr + kosztlw <= b) return 1;
        }
    }
    return 0;
}
int besthub(int r, int l, int x[], ll b) {
    n = r;
    int pocz = 0, kon = n, sr;
    pre.resize(n + 1);
    suf.resize(n + 1);
    arr.resize(n + 1);
    pre[0] = 0;
    suf[0] = 0;
    for (int i = 0; i < n; i++) arr[i + 1] = x[i];
    for (int i = 1; i <= n; i++) {
        pre[i] = pre[i - 1] + arr[i];
        suf[i] = suf[i - 1] + l - arr[n - i + 1];
    }
    while (pocz < kon) {
        sr = (pocz + kon + 1) / 2;
        cout << pocz << " " << kon << endl;
        if (czy(sr, b, l)) pocz = sr;
        else kon = sr - 1;
    }
    return pocz;
}
/*int main() {
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    ll r, l, b;
    cin >> r >> l;
    int x[r];
    for (int i = 0; i < r; i++) {
        cin >> x[i];
    }
    int q;
    cin >> q;
    while (q--) {
        cin >> b;
        cout << besthub(r, l, x, b) << endl;
    }
}*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...