Submission #434078

#TimeUsernameProblemLanguageResultExecution timeMemory
434078illyakrRice Hub (IOI11_ricehub)C++14
17 / 100
1083 ms588 KiB
#include <bits/stdc++.h> #include "ricehub.h" using namespace std; #define ll long long ll have; ll n; ll a[101010]; ll tr(ll x) { ll now = have; int cl = 1; ll sum = 0; for (int i = 1; i <= n; i++) { if (abs(a[i] - x) < abs(a[cl] - x)) cl = i; sum += abs(a[i] - x); } ll ans = 0; ll cnt = now / sum; ans = cnt * n; now -= (cnt * sum); if (abs(a[cl] - x) <= now) { now -= abs(a[cl] - x); ans++; int l = cl - 1, r = cl + 1; while (true) { if (l < 1 && r > n)break; if (l < 1 && abs(a[r] - x) <= now) { now -= abs(a[r] - x); r++;ans++;continue; } if (r > n && abs(a[l] - x) <= now) { now -= abs(a[l] - x); l--;ans++;continue; } if (l >= 1 && abs(a[l] - x) < abs(a[r] - x) && abs(a[l] - x) <= now) { now -= abs(a[l] - x); l--;ans++;continue; } if (r <= n && abs(a[l] - x) >= abs(a[r] - x) && abs(a[r] - x) <= now) { now -= abs(a[r] - x); r++;ans++;continue; } break; } } // cout << x << " --- " << ans << " " << cnt << endl; return ans; } ll ans = 0; int besthub(int R, int L, int X[], long long B) { n = R; for (int i = 0; i < R; i++) a[i + 1] = X[i]; have = B; for (int i = 1; i <= L; i++) { ans = max(ans, tr(i)); } return ans; } /** 5 20 6 1 2 10 12 14 3 */
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...