Submission #1003294

#TimeUsernameProblemLanguageResultExecution timeMemory
1003294hacizadalRice Hub (IOI11_ricehub)C++17
0 / 100
4 ms604 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; #define endl '\n' #define ll long long #define pll pair<ll, ll> ll p[5005]; pll binary1(ll b, ll e, ll num, ll money) { ll l = b, r = e, ans = 0; while (l <= r){ ll m = (l + r)/2; if (p[m] - p[b-1] - ((m-b+1)*num) <= money){ l = m + 1; ans = money - (p[m] - p[b-1] - ((m-b+1)*num)); } else { r = m - 1; } } return {ans, l-1}; } pll binary2(ll b, ll e, ll num, ll money) { ll l = b, r = e, ans = 0; while (l <= r){ ll m = (l + r)/2; if ((e-m+1)*num - (p[e] - p[m-1]) <= money){ r = m - 1; ans = money - (e-m+1)*num - (p[e] - p[m-1]); } else { l = m + 1; } } return {ans, r+1}; } int besthub(int n, int l, int a[], long long b) { for (ll i = 0; i<n; i++){ p[i+1] = p[i] + a[i]; } ll mx = 0; for (ll i = 0; i<n; i++){ pll k, g; if (i < n - 1){ k = binary1(i+1, n, a[i], b); } else { k = {b, n}; } g = binary2(1, i, a[i], k.first); mx = max(mx, (k.second-g.second+1)); g = binary2(1, i, a[i], b); if (i < n - 1){ k = binary1(i, n, a[i], g.first); } else { k = {0, n}; } mx = max(mx, (k.second-g.second+1)); } return mx; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...