제출 #1215902

#제출 시각아이디문제언어결과실행 시간메모리
1215902jellybeanBikeparking (EGOI24_bikeparking)C++20
100 / 100
88 ms9800 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
#define pii pair<int,int>
#define fi first
#define se second
#define pb push_back
#define dd(x) cout<<#x<<" is "<<x<<endl;

signed main(){
	
	int n; cin>>n;
	int b[n], p[n];
	int sum = 0;
	for(int i=0; i<n; i++) cin>>b[i];
	for(int i=0; i<n; i++) cin>>p[i], sum -= p[i];
	
	stack<pii>s;
	
	for(int i=0; i<n; i++){
		while(s.size() and p[i]){
			auto[x,id] = s.top(); s.pop();
			sum += 2*min(p[i],x);
			if(x >= p[i]){
				x -= p[i];
				b[id] = x;
				s.push({x,id});
				p[i] = 0;
			} else {
				p[i] -= x;
				b[id] = 0;
			}
		}
		s.push({b[i],i});
	}
	
	for(int i=0; i<n; i++){
		if(b[i] and p[i]){
			int x = min(b[i],p[i]);
			b[i] -= x, p[i] -= x;
			sum += x;
		}
	}
	
	cout<<sum;
	
	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...