Submission #70651

#TimeUsernameProblemLanguageResultExecution timeMemory
70651dooweyRice Hub (IOI11_ricehub)C++14
100 / 100
28 ms14220 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; ll ab(ll x){ return max(x, -x); } const int N = (int)1e5 + 9; ll pref[N]; ll rq(int a, int b){ if(a == 0) return pref[b]; else return pref[b] - pref[a - 1]; } int besthub(int n, int L, int X[], ll B){ int l = 1, r = n + 1; pref[0] = X[0]; for(int i = 1;i < n;i ++ ) pref[i] += pref[i - 1] + X[i]; int k; bool ok; int med; ll sum = 0; ll s1, s2; ll D; while(l + 1 < r){ k = (l + r)/2; ok = false; for(int i = 0;i <= n-k;i ++ ){ med = k / 2; sum = 0; s1 = rq(i, i + med - 1); s2 = rq(i + med + 1, i + k - 1); D = X[i + med]; sum += (1ll * D * med) - s1; sum += s2 - (1ll * D * (k - med - 1)); if(sum <= B) ok = true; } if(ok) l = k; else r = k; } return l; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...