Submission #377661

#TimeUsernameProblemLanguageResultExecution timeMemory
377661jlallas384Rice Hub (IOI11_ricehub)C++14
100 / 100
21 ms2540 KiB
#include <bits/stdc++.h>
#include "ricehub.h"

using namespace std;
using ll = long long;

ll pref[100100];
ll sum(int l,int r){
	return pref[r+1] - pref[l];
}

int besthub(int n, int ln, int x[], ll b){
	for(int i = 0; i < n; i++){
        pref[i+1] = pref[i] + x[i];
    }
    int ans = 0,r = 0;
    for(int l = 0; l < n; l++){
        while(r < n){
            ll res = 0;
            if(r - l == 1) res = x[r] - x[l];
            else if(r - l != 0){
                int md = l + (r-l)/2;
                int cnt = (r-l+1)/2;
                ll up = sum(md+1,r) - (ll) cnt * x[md];
                ll down = (ll) x[md] * (cnt - (r - l) % 2) - sum(l,md-1);
                res = up + down;
            }
            if(res > b) break;
            else{
                ans = max(ans,r - l + 1);
                r++;
            }
        }
    }
    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...