Submission #1151580

#TimeUsernameProblemLanguageResultExecution timeMemory
1151580ghammazhassanBikeparking (EGOI24_bikeparking)C++20
25 / 100
26 ms7492 KiB
// #include <bits/stdc++.h>
#include <iostream>
#include <cmath>
#include <algorithm>
#include <map>
#include <vector>
#include <iomanip>
#include <string>
#include <queue>
#include <set>
#include <deque>
using namespace std;
#define int long long
const int N=3e5+5;
const int M=998244353;
const int LOG = 18;
int n , m , c , t=1 , q=1 , x , y;
vector<int>a(N),b(N),p(N);

void solve()
{
	cin >> n;
	for (int i=0;i<n;i++){
		cin >> a[i];
	}
	int r=0;
	for (int i=0;i<n;i++){
		cin >> b[i];
		r+=b[i];
	}
	int c=0;
	for (int i=0;i<n;i++){
		c+=a[i];
		p[i]=c;
	}
	c=0;
	int l=0;
	int x=p[n-1];
	int us=0;
	int ri=r;
	for (int i=n-1;i>0;i--){
		x=min(x,p[i-1]);
		int o=min(us,a[i]);
		us-=o;
		a[i]-=o;
		if (x<ri-b[i]){
			// cout << i << endl;
			int u=min({ri-x,a[i],b[i]});
			a[i]-=u;
			b[i]-=u;
			r-=u;
			ri-=u;
		}
		int u=min(x,b[i]);
		x-=u;
		ri-=u;
		b[i]-=u;
		l+=u;
		us+=u;
		u=min(b[i],a[i]);
		r-=u;
		ri-=u;

	}
	int i=0;
	x=0;
	int o=min(us,a[i]);
	us-=o;
	a[i]-=o;
	int u=min(x,b[i]);
	x-=u;
	b[i]-=u;
	l+=u;
	us+=u;
	u=min(b[i],a[i]);
	r-=u;
	// cout << r << endl;
	cout << 2*l-r << endl;
}
signed main()
{

    ios::sync_with_stdio(0);//DO NOT USE IN INTERACTIVE
    cin.tie(0), cout.tie(0);//DO NOT USE IN INTERACTIVE
    cout << fixed<<setprecision(9);
    // int t=1;
    // cin >> t;
    
    for (int _=1;_<=t;_++){
    	solve();
    	q++;
    }
}
#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...