Submission #1062254

#TimeUsernameProblemLanguageResultExecution timeMemory
1062254PurpleCrayonBikeparking (EGOI24_bikeparking)C++17
100 / 100
39 ms9944 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define sz(v) int(v.size())
#define ar array
typedef long long ll;
const int N = 50, MOD = 1e9+7;

void solve() {
    int n; cin >> n;
    vector<ll> a(n); for (auto& x : a) cin >> x;
    vector<ll> b(n); for (auto& x : b) cin >> x;

    // I want to be matched with things lower than me

    ll happy = 0;
    vector<int> stk;
    for (int i = 0; i < n; i++) {
        if (i && a[i-1]) stk.push_back(i-1);
        while (sz(stk) && b[i]) {
            int p = stk.back();
            ll cur = min(b[i], a[p]);
            happy += cur;
            b[i] -= cur;
            a[p] -= cur;

            if (!a[p]) stk.pop_back();
        }
    }

    ll sad = 0;
    for (int i = 0; i < n; i++) {
        ll cur = min(a[i], b[i]);
        sad += b[i] - cur;
    }

    cout << happy - sad << '\n';
}
 
int main() {
    ios::sync_with_stdio(false); cin.tie(0);
    int T = 1;
    // cin >> T;
    while (T--) solve();
}
#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...