Submission #1058579

#TimeUsernameProblemLanguageResultExecution timeMemory
1058579user736482Bikeparking (EGOI24_bikeparking)C++17
100 / 100
39 ms12492 KiB
#include<bits/stdc++.h>
using namespace std;
long long a,b,c,t,n,x,y,m,q,store,st2;
vector<long long>v1,v2;
stack<pair<long long,long long>>s;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cin>>n;
    long long res=0;
    for(long long i=0;i<n;i++){
        cin>>a;
        v1.push_back(a);
    }
    for(long long i=0;i<n;i++){
        cin>>a;
        v2.push_back(a);
    }
    long long pt1=n-1,pt2=n-1;
    if(a)
    s.push({a,n-1});
    while(pt1>=0){
            //cout<<pt1<<" "<<pt2<<"   ";
        if(pt1>=pt2 || v1[pt1]==0){
            pt1--;
            continue;

        }
        while(pt2-1>pt1){
            pt2--;
            if(v2[pt2]>0)
                s.push({v2[pt2],pt2});
        }
        if(s.empty()){
                pt2--;
            if(v2[pt2]>0)
                s.push({v2[pt2],pt2});
            continue;}
        if(s.top().first>v1[pt1]){
            s.top().first-=v1[pt1];
            res+=v1[pt1];
            v1[pt1]=0;
        }
        else{
            v1[pt1]-=s.top().first;
            res+=s.top().first;
            s.pop();
        }

    }
    pt2--;
    while(pt2>=0){
    s.push({v2[pt2],pt2});
    pt2--;}
    //cout<<res;
    while(s.size()>0){
        //cout<<s.top().first<<" "<<s.top().second<<"  ";
        res-=max(0LL,s.top().first-v1[s.top().second]);
        s.pop();
    }
    cout<<res;
    return 0;
}
#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...