Submission #114155

#TimeUsernameProblemLanguageResultExecution timeMemory
114155MladenPRice Hub (IOI11_ricehub)C++17
100 / 100
18 ms1152 KiB
#include<bits/stdc++.h> #define STIZE(x) fprintf(stderr, "STIZE%d\n", x); #define PRINT(x) fprintf(stderr, "%s = %d\n", #x, x); #define NL(x) printf("%c", " \n"[(x)]); #define lld long long #define pii pair<int,int> #define pb push_back #define fi first #define se second #define mid (l+r)/2 #define endl '\n' #define all(a) begin(a),end(a) #define sz(a) int((a).size()) #define LINF 1000000000000000LL #define INF 1000000000 #define EPS 1e-9 using namespace std; #define MAXN 100010 int x[MAXN]; lld n, b; bool check(lld key) { int c = key/2; lld l = c, r = key-l-1; lld L = 0, R = 0; for(int i = 0; i < c; i++) L += x[i]; for(int i = c+1; i < key; i++) R += x[i]; lld rez = R-r*x[c]+l*x[c]-L; for(int i = 1; i <= n-key; i++) { c++; L -= x[i-1]; L += x[c-1]; R -= x[c]; R += x[i+key-1]; if(R-r*x[c]+l*x[c]-L < rez) rez = R-r*x[c]+l*x[c]-L; } return rez <= b; } int besthub(int R, int L, int X[], long long B) { n = R, b = B; for(int i = 0; i < R; i++) x[i] = X[i]; int l = 2, r = R, rez = 1; while(l <= r) { if(check(mid)) rez = mid, l = mid+1; else r = mid-1; } return rez; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...