Submission #856148

#TimeUsernameProblemLanguageResultExecution timeMemory
856148aykhnRice Hub (IOI11_ricehub)C++14
49 / 100
11 ms4216 KiB
#include "ricehub.h" #include <bits/stdc++.h> // author : aykhn using namespace std; typedef long long ll; #define pb push_back #define ins insert #define mpr make_pair #define all(v) v.begin(), v.end() #define bpc __builtin_popcount #define pii pair<int, int> #define pll pair<ll, ll> #define fi first #define se second #define infll 0x3F3F3F3F3F3F3F3F #define inf 0x3F3F3F3F int besthub(int n, int L, int X[], long long b) { ll x[n]; for (int i = 0; i < n; i++) x[i] = X[i]; vector<ll> pref(n + 1); pref[0] = x[0]; for (int i = 1; i < n; i++) pref[i] = pref[i - 1] + x[i]; pref[n] = pref[n - 1]; int ans = 1; int l = 0; int r = 1; for (int i = 0; i < n; i++) { ll sum = x[i] * (i - l + 1) - (pref[i] - (l ? pref[l - 1] : 0)); sum += pref[r - 1] - (i ? pref[i - 1] : 0) - x[i] * (r - i); while (l < i) { if (sum <= b) break; sum -= abs(x[i] - x[l]); l++; } while (r < n) { if (sum + abs(x[r] - x[i]) <= b) { sum += abs(x[r] - x[i]); r++; } else break; } while (r < n && abs(x[l] - x[i]) > abs(x[r] - x[i])) { sum -= abs(x[l] - x[i]); sum += abs(x[r] - x[i]); l++; r++; } ans = max(ans, r - l); } 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...