제출 #1172886

#제출 시각아이디문제언어결과실행 시간메모리
1172886WarinchaiBikeparking (EGOI24_bikeparking)C++20
100 / 100
141 ms17344 KiB
#include<bits/stdc++.h>
using namespace std;
int x[300005];
int y[300005];
vector<int>ppl;
vector<int>lvl;
int main(){
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;cin>>n;
    for(int i=0;i<n;i++){
        cin>>x[i];
    }
    for(int i=0;i<n;i++){
        cin>>y[i];
    }
    multiset<int>ms;
    for(int i=0;i<n;i++)ms.insert(i);
    int ans=0;
    for(int i=n-1;i>=0;i--){
        //cerr<<i<<":\n";
        auto it=ms.lower_bound(i+1);
        vector<int>del;
        while(it!=ms.end()){
            int id=*it;
            int mn=min(x[i],y[id]);
            ans+=mn;
            x[i]-=mn;
            y[id]-=mn;
            //cerr<<"use:"<<mn<<"\n";
            if(y[id]==0)del.push_back(id);
            if(x[i]==0)break;
            it++;
        }
        for(auto x:del)ms.erase(x);
    }
    for(int i=0;i<n;i++){
        int mn=min(x[i],y[i]);
        x[i]-=mn;
        y[i]-=mn;
        //cerr<<"left:"<<y[i]<<"\n";
        ans-=y[i];
    }
    cout<<ans;
}
#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...