제출 #1241413

#제출 시각아이디문제언어결과실행 시간메모리
1241413aren_danceBikeparking (EGOI24_bikeparking)C++20
25 / 100
82 ms7492 KiB
#include <bits/stdc++.h>
using namespace std;
const int N=6e5;
int n;
long long x[N];
long long y[N];
long long suf[N];
int main()
{
    cin>>n;
    for(int i=1;i<=n;++i){
        cin>>x[i];
    }
    for(int i=1;i<=n;++i){
        cin>>y[i];
    }
    for(int i=n;i>0;--i){
        suf[i]=suf[i+1]+y[i];
    }
    int vel1=1;
    int vel2=n;
    long long answ=0ll;
    for(int i=1;i<=n;++i){
        while(y[i]!=0 && vel1<i){
            long long p=min(x[vel1],y[i]);
            if(vel1!=i){
                answ+=p;
            }
            y[i]-=p;
            x[vel1]-=p;
            if(y[i]!=0)
            vel1++;
        }
        if(suf[i+1]<x[i]){
            long long p=min(y[i],x[i]-suf[i+1]);
            y[i]-=p;
            x[i]-=p;
        }
        while(y[i]!=0 && vel2>i){
            long long p=min(x[vel2],y[i]);
            y[i]-=p;
            x[vel2]-=p;
            if(i!=vel2)
            answ-=p;
            if(y[i]!=0){
                vel2--;
            }
        }
    }
    cout<<answ;
    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...