Submission #146909

#TimeUsernameProblemLanguageResultExecution timeMemory
146909bortozPotatoes and fertilizers (LMIO19_bulves)C++17
0 / 100
6 ms888 KiB
#include "bits/stdc++.h" using namespace std; typedef long long ll; #define fi first #define se second int main() { ios::sync_with_stdio(false); int N; cin >> N; vector<int> V(N); set<int> L; for (int i = 0; i < N; i++) { int a, b; cin >> a >> b; V[i] = a - b; if (V[i] > 0) { L.insert(i); } } ll res = 0; for (int i = 0; i < N; i++) { // print(i, L); auto itR = L.lower_bound(i); if (itR == L.end() && itR != L.begin()) { itR--; } auto itL = itR; if (itL != L.begin()) { itL--; } while (V[i] < 0) { // print(i, V[i], L, *itL, *itR); if (abs(i - *itL) < abs(i - *itR)) { int m = min(-V[i], V[*itL]); res += 1ll * m * abs(i - *itL); V[i] += m; V[*itL] -= m; if (V[*itL] == 0) { itL = L.erase(itL); } if (itL != L.begin()) { itL--; } } else { int m = min(-V[i], V[*itR]); res += 1ll * m * abs(i - *itR); V[i] += m; V[*itR] -= m; if (V[*itR] == 0) { itR = L.erase(itR); } } } } cout << res << endl; 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...