Submission #1301434

#TimeUsernameProblemLanguageResultExecution timeMemory
1301434pashtetkasRice Hub (IOI11_ricehub)C++20
17 / 100
1 ms652 KiB
#include <bits/stdc++.h>

using namespace std;

bool check(int k, vector<long long>&pref, int X[], int R, long long B){
    long long min_wyn = LLONG_MAX;
    long long n = R - k + 1;
    for(long long l = 1; l<=n; l++){
        long long r = l + k - 1;
        long long m = ((l-1)+(r-1))/2;
        long long temp_wyn = (long long)((long long)(m - (l-1))*X[m]) - (pref[m] - pref[l-1]);
        temp_wyn += (long long)(pref[r] - pref[m+1]) - (long long)((long long)(r - m - 1)*X[m]);
        min_wyn = min(min_wyn, temp_wyn);
    }
    if(min_wyn <= B)return true;
    else return false;
}

long long besthub(int R, int L, int X[], long long B){
    if(B == 0)return 0;
    vector<long long>pref(R+7, 0);
    for(int i = 1; i<=R; i++)pref[i] = pref[i-1] + X[i-1];
    int l = 1;
    int r = R;
    int wyn = 0;
    while(l<=r){
        int mid = (l+r)/2;
        if(check(mid, pref, X, R, B)){
            l = mid + 1;
            wyn = max(wyn, mid);
        }
        else r = mid - 1;
    }
    return wyn;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...