Submission #1330221

#TimeUsernameProblemLanguageResultExecution timeMemory
1330221AMel0nBikeparking (EGOI24_bikeparking)C++20
100 / 100
31 ms4956 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int INF = 1e9 + 7;


signed main() {
    cin.tie(0); ios::sync_with_stdio(false);
    int N;
    cin >> N;
    vector<int> X(N), Y(N);
    for(int i = 0; i < N; i++) cin >> X[i];
    for(int i = 0; i < N; i++) cin >> Y[i];
    int res = 0;
    vector<int> stk;
    for(int i = 1; i < N; i++) {
        int d = min(X[i-1], Y[i]);
        res += d;
        X[i-1] -= d;
        Y[i] -= d;
        if (X[i-1]) stk.push_back(i-1);
        else {
            while(stk.size()) {
                int d = min(X[stk.back()], Y[i]);
                res += d;
                X[stk.back()] -= d;
                Y[i] -= d; 
                if (!Y[i]) break;
                else stk.pop_back();
            }
        } 
    }
    for(int i = 0; i < N; i++) {
        int d = min(X[i], Y[i]);
        X[i] -= d;
        Y[i] -= d;
    }
    for(int i = 0; i < N; i++) {
        res -= Y[i];
    }
    cout << res;
}
#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...