Submission #348395

#TimeUsernameProblemLanguageResultExecution timeMemory
348395idk321Rice Hub (IOI11_ricehub)C++11
49 / 100
17 ms748 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; typedef long long ll; int besthub(int n, int l, int x[], long long money) { int a = 0; int b = 0; ll cost = 0; int best = 0; while (b + 1 < n && cost + x[(b + 1)] - x[0] <= money) { cost += x[(b + 1)] - x[0]; b++; } int left = 0; int right = b; best = max(best, b - a + 1); //cout << "oj " << cost << endl; for (int i = 1; i < n; i++) { cost -= (ll) right * (x[i] - x[i - 1]); left++; cost += (ll) left * (x[i] - x[i - 1]); right--; while(cost > money) { cost -= x[i] - x[a]; a++; left--; } while((b + 1 < n && x[b + 1] - x[i] + cost < money) || (b + 1 < n && x[i] - x[a] > x[b + 1] - x[i])) { if (x[b + 1] - x[i] + cost < money) { cost += x[b + 1] - x[i]; b++; right++; } else { cost -= x[i] - x[a]; a++; left--; cost += x[b + 1] - x[i]; b++; right++; } } //cout << "oj " << a << " " << b << " " << cost << endl; best = max(best, b - a + 1); } return best; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...