제출 #1166498

#제출 시각아이디문제언어결과실행 시간메모리
1166498tsengangBikeparking (EGOI24_bikeparking)C++20
25 / 100
162 ms21520 KiB
#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define ertunt return
#define vodka void
#define sleepearly ertunt
using namespace std;
int main() {
    ll n;
    cin >> n;
    vector<ll> a(n);
    for (ll i = 0; i < n; i++) cin >> a[i];

    ll j = 0;
    set<pair<ll,ll>>s;
    for(ll i = 0; i < n; i++){
        ll b;
        cin >> b;
        if(b > 0){
            s.insert({i,b});
            j+=b;
        }
    }
    ll ans = 0;
    ll k = 0;
    for(ll i = 0; i < n; i++){
        if(s.empty())break;
        while(a[i] > 0){
            auto it = s.upper_bound({i,1e18});
            if(it == s.end())break;
            s.erase(it);
            pair<ll,ll>p = *it;
            ll x = min(p.ss,a[i]);
            ans+=x;
            a[i]-=x;
            p.ss-=x;
            if(p.ss > 0)s.insert(p);
        }
    }
    for(auto [x,y] : s){
        k+=min(a[x],y);
    }
    cout << ans*2+k-j;
}
#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...