Submission #418355

#TimeUsernameProblemLanguageResultExecution timeMemory
418355AzimjonRice Hub (IOI11_ricehub)C++17
100 / 100
16 ms1196 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; int besthub(int R, int L, int X[], long long B) { auto cost = [&](int x, int y) { return abs(X[x] - X[y]); }; int ans = 1; long long pb = 0; int l, r; l = r = 0; for (; l + 1 < R;) { while (r + 1 < R) { int lm = (l + r) / 2; int cm = (l + r + 1) / 2; long long cb = pb; if (lm != cm) { cb += (lm - l + 1) * cost(cm, lm); cb -= (r - cm + 1) * cost(cm, lm); } cb += cost(cm, r + 1); // cerr << l << " " << r + 1 << " " << cb << " " << endl; if (cb > B) break; pb = cb; r++; } ans = max(ans, r - l + 1); // l++; int lm = (l + r) / 2; int cm = (l + r + 1) / 2; if (lm != cm) { pb += (lm - l + 1) * cost(cm, lm); pb -= (r - cm + 1) * cost(cm, lm); } pb -= cost(cm, l); l++; r = max(r, l); // cerr << "-----" << l << " " << r << " " << pb << " " << endl; } 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...