#include <bits/stdc++.h>
#define ll long long
#define ff first
#define ss second
#define all(x) x.begin(),x.end()
#define rall(x) x.rbegin(),x.rend()
#define pb push_back
#define ertunt return
#define vodka void
#define sleepearly ertunt
using namespace std;
int main() {
ll n;
cin >> n;
vector<ll> a(n);
for (ll i = 0; i < n; i++) cin >> a[i];
ll j = 0;
set<pair<ll,ll>>s;
for(ll i = 0; i < n; i++){
ll b;
cin >> b;
if(b > 0){
s.insert({i,b});
j+=b;
}
}
ll ans = 0;
ll k = 0;
for(ll i = 0; i < n; i++){
if(s.empty())break;
while(a[i] > 0){
auto it = s.upper_bound({i,1e18});
if(it == s.end())break;
s.erase(it);
pair<ll,ll>p = *it;
ll x = min(p.ss,a[i]);
ans+=x;
a[i]-=x;
p.ss-=x;
if(p.ss > 0)s.insert(p);
}
}
for(auto [x,y] : s){
k+=min(a[x],y);
}
cout << ans*2+k-j;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |