Submission #1265890

#TimeUsernameProblemLanguageResultExecution timeMemory
1265890WaelPotatoes and fertilizers (LMIO19_bulves)C++20
100 / 100
110 ms12464 KiB
#include <bits/stdc++.h>
using namespace std;

using i64 = long long;

constexpr i64 inf = 1E18;

void solve() {
    int n;
    cin >> n;
    
    vector<int> a(n), b(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i] >> b[i];
    }
    
    i64 ans = 0;
    i64 k = 0;
    priority_queue<array<i64, 2>, vector<array<i64, 2>>, greater<>> pq;
    pq.push({0, inf});
    for (int i = 0; i < n; ++i) {
        k += b[i] - a[i];
        pq.push({k, 2});
        auto [v, c] = pq.top();
        ans += k - v;
        pq.pop();
        --c;
        if (c > 0) {
            pq.push({v, c});
        }
    }
    while (!pq.empty() && pq.top()[0] < k) {
        ans += pq.top()[1] * (k - pq.top()[0]);
        pq.pop();
    }
    
    cout << ans << "\n";
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    
    int t = 1;
    //cin >> t;
    
    while (t--) {
        solve();
    }
    
    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...