Submission #584650

#TimeUsernameProblemLanguageResultExecution timeMemory
584650tekiRice Hub (IOI11_ricehub)C++11
58 / 100
15 ms2516 KiB
#include <bits/stdc++.h>
#include "ricehub.h"

typedef long long ll;

#define pb push_back
#define MS(x,y) memset((x),(y),sizeof((x)))
const ll MN = 1000000007;

using namespace std;

int besthub(int n, int l, int poz[], ll b) {
    ll prefSuma[n];
    MS(prefSuma,0);

    for (ll i = 0; i<n; i++) {
        prefSuma[i] = poz[i];
        if (i != 0) prefSuma[i] += prefSuma[i-1];
    }

    ll from = 0;
    ll res = 0;

    for (ll to = 0; to<n; to++) {
        ll mid = (from+to)/2;

        ll levoS = mid-from;
        ll desnoS = to-mid;

        ll necBud = levoS*poz[mid];
        necBud -= prefSuma[mid-1];
        if (from != 0) necBud += prefSuma[from-1];

        if (to > mid) {
            necBud += prefSuma[to];
            necBud -= prefSuma[mid];
            necBud -= desnoS*poz[mid];
        }

        if (necBud > b) from++;
        else res = max(res,to-from+1);
    }

    return res;

}

//int main()
//{
//    #if LOCAL_DEBUG
//        fstream cin("in.txt");
//    #endif
//
//    ios_base::sync_with_stdio(false);
//    cin.tie(0);
//    cout.tie(0);
//
//    int niz[] = {1,2,10,12,14};
//
//    cout<<besthub(5,20,niz,6)<<endl;
//
//    return 0;
//}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...