Submission #343324

#TimeUsernameProblemLanguageResultExecution timeMemory
343324Aldas25쌀 창고 (IOI11_ricehub)C++14
100 / 100
21 ms2156 KiB
#include "ricehub.h" #include <bits/stdc++.h> using namespace std; #define FOR(i, a, b) for (int i = (a); i <= (b); i++) #define REP(n) FOR(O, 1, (n)) #define f first #define s second #define pb push_back typedef long long ll; const int MAXN = 100100; int r, l; int x[MAXN]; ll b; int besthub(int R, int L, int X[], long long B) { r = R; l = L; x[0] =X[0]; FOR(i, 1, r) x[i] = X[i-1]; b = B; int ans = 1; int le = 1, ri = 1; ll sum = 0ll; while (le <= r) { if (sum <= b) ans = max(ans, ri - le); int mid = (le+ri-1)/2; if (ri <= r && sum <= b) { sum += abs(x[ri] - x[mid]); int newMid = (le+ri)/2; ll dx = x[newMid] - x[mid]; ll cnt = ri-le+1; sum += (cnt/2) * dx; sum -= ((cnt+1)/2) * dx; ri++; } else { sum -= abs(x[le] - x[mid]); int newMid = (le+ri)/2; ll dx = x[newMid] - x[mid]; ll cnt = ri-le-1; sum += (cnt/2) * dx; sum -= ((cnt+1)/2) * dx; le++; } //cout << " le = " << le << " ri = " << ri << " sum = " << sum << 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...