제출 #1245857

#제출 시각아이디문제언어결과실행 시간메모리
1245857AMel0nBikeparking (EGOI24_bikeparking)C++20
100 / 100
31 ms7100 KiB
#include <bits/stdc++.h>
using namespace std;

typedef long long ll;
#define FOR(i,N) for(ll i = 0; i < N; i++)
#define all(x) (x).begin(), (x).end()
#define F first
#define S second


signed main() {
    cin.tie(0); ios::sync_with_stdio(false);
    ll N;
    cin >> N;
    vector<ll> park(N), user(N);
    FOR(i, N) cin >> park[i];
    FOR(i, N) cin >> user[i];
    vector<ll> bru;
    ll res = 0;
    for(ll u = N-1; u > 0; u--) {
        ll delta = min(park[u-1], user[u]);
        park[u-1] -= delta;
        user[u] -= delta;
        res += delta;
        if (!park[u-1] && user[u]) bru.push_back(u);
        if (park[u-1] && !user[u]) {
            while(bru.size()) {
                ll end = bru.back();
                delta = min(park[u-1], user[end]);
                park[u-1] -= delta;
                user[end] -= delta;
                res += delta;
                if (!user[end]) bru.pop_back();
                if (!park[u-1]) break;
            }
        } 
    }
    FOR(i, N) res -= max(0ll, user[i] - park[i]);
    cout << res << '\n';
}
#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...