Submission #895954

#TimeUsernameProblemLanguageResultExecution timeMemory
895954omsincoconutPotatoes and fertilizers (LMIO19_bulves)C++17
0 / 100
2 ms2648 KiB
#include <bits/stdc++.h> using namespace std; typedef long long int lli; typedef long double ld; typedef pair<ld, ld> pld; typedef pair<lli, lli> pll; #define mp(x, y) make_pair(x, y) const lli MAXN = 5e5+5; lli N; lli a[MAXN], b[MAXN]; int main() { //ios_base::sync_with_stdio(false); //cin.tie(NULL); cin >> N; for (lli i = 0; i < N; i++) cin >> a[i] >> b[i]; priority_queue<pll> fpos, bpos; fpos.emplace(-1e9, 0); bpos.emplace(-1e9, 0); for (lli i = 0; i < N; i++) { if (a[i] >= b[i]) { a[i] -= b[i]; b[i] = 0; fpos.emplace(-i, a[i]); } else { b[i] -= a[i]; a[i] = 0; } } lli ans = 0; for (lli i = 0; i < N; i++) { while (-fpos.top().first <= i) { bpos.emplace(-fpos.top().first, fpos.top().second); fpos.pop(); } while (b[i] > 0) { lli fp = -fpos.top().first, bp = bpos.top().first; lli fd = fp - i, bd = i - bp; if (bd <= fd) { lli vl = bpos.top().second; if (vl <= b[i]) { ans += bd*vl; b[i] -= vl; bpos.pop(); } else { ans += bd*b[i]; vl -= b[i]; b[i] = 0; pll tmp = mp(bp, vl); bpos.pop(); bpos.push(tmp); } } else { lli vl = fpos.top().second; if (vl <= b[i]) { ans += fd*vl; b[i] -= vl; fpos.pop(); } else { ans += fd*b[i]; vl -= b[i]; b[i] = 0; pll tmp = mp(-fp, vl); fpos.pop(); fpos.push(tmp); } } } } cout << ans; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...