Submission #436895

#TimeUsernameProblemLanguageResultExecution timeMemory
436895kevinxiehkRice Hub (IOI11_ricehub)C++17
100 / 100
20 ms3276 KiB
#include "ricehub.h" #include <bits/stdc++.h> #define ll long long using namespace std; ll psum[100005]; ll sm[100005]; ll b; int r; ll range(int r, int l) { return psum[r] - psum[l - 1]; } bool one(int k) { if(k == 1) return true; for(int i = 1; i + k - 1 <= r; i++) { int m = i + k / 2; ll lef = m - i; ll rig = k - lef; ll sum = (sm[m] * lef - range(m - 1, i)) + (range(i + k - 1, m) - sm[m] * rig); if(sum <= b) return true; } return false; } int besthub(int R, int L, int x[], ll B) { b = B; r = R; for(int i = 1; i <= r; i++) { psum[i] = psum[i - 1] + x[i - 1]; sm[i] = x[i - 1]; //cerr << psum[i] << '\n'; } int l = 1, rr = r; while(l < rr) { int m = (l + rr + 1) / 2; if(one(m)) l = m; else rr = m - 1; } 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...