#include<bits/stdc++.h>
//#include<atcoder/all>
using namespace std;
//using namespace atcoder;
#define rep(i,n) for(ll i=0; i<n; i++)
#define rrep(i,n) for(ll i=n-1; i>=0; i--)
#define print(a) cout<<a<<endl
typedef long long ll;
#define yn(flg) if(flg){cout<<"Yes"<<endl;}else{cout<<"No"<<endl;}
#define YN(flg) if(flg){cout<<"YES"<<endl;}else{cout<<"NO"<<endl;}
#define so(a) sort(a.begin(),a.end())
#define mp make_pair
#define vi vector<int>
#define vl vector<ll>
#define vs vector<string>
#define pb push_back
#define a2i(a,s) (ll)(a-s)
#define i2a(s,a) (char)(s+a)
#define ssize(a) a.size()
typedef pair<int, int> Pii;
typedef pair<int, ll> Pil;
typedef pair<pair<ll,ll>,ll> P3;
typedef pair<pair<ll,ll>,pair<ll,ll>> P4;
typedef pair<ll, ll> Pll;
typedef pair<ll,Pll> Plll;
typedef pair<Pii, int> Piii;
const ll INF = 1000000000000000000;
template<class T> inline bool chmin(T& a, T b) {
if (a > b) {
a = b;
return true;
}
return false;
}
template<class T> inline bool chmax(T& a, T b) {
if (a < b) {
a = b;
return true;
}
return false;
}
using ull=unsigned long long;
int main(){
//入力
cin.tie(0);
ios::sync_with_stdio(0);
// ll a,b;
// cin>>a>>b;
// cout<<a<<" "<<b<<endl;
ll n;
cin>>n;
vector<ll> x(n);
vector<ll> y(n);
vector<ll> X(n);
ll sum=0,sum2=0;
for(ll i=0;i<n;i++){
cin>>x[i];
X[i]=x[i];
}
// cout<<sum<<endl;
rep(i,n)cin>>y[i];
//前計算
//判定
ll ans=0;
vector<ll> v(n,0);
priority_queue<Pll> que;
for(ll i=0;i<n;i++){
if(i==0&x[0]!=0){
que.push({i,x[0]});
v[i]=y[i];
continue;
}
while(!que.empty()){
ll pos=que.top().first,cost=que.top().second;
que.pop();
if(y[i]>cost){
ans+=cost;
y[i]-=cost;
X[pos]=0;
}
else{
ans+=y[i];
// v2[p].push_back({i,y[i]});
X[pos]-=y[i];
y[i]=0;
que.push({pos,X[pos]});
break;
}
}
que.push({i,X[i]});
v[i]=y[i];
// ans-=v[i];
}
// cout<<ans<<endl;
for(ll i=0;i<n;i++){
// cout<<v[i]<<endl;
if(v[i]>0){
if(X[i]>0){
v[i]=max((ll)0,v[i]-X[i]);
}
ans-=v[i];
// if(v[i]>0){
//
// sort(v2[i].begin(),v2[i].end());
// for(ll j=0;j<v2[i].size();j++){
// ll nx=v2[i][j].first,cost=v2[i][j].second;
// if(cost>=v[i]){
// v[nx]+=v[i];
// ans-=v[i];
// v[i]=0;
// break;
// }else{
// v[nx]+=cost;
// ans-=v[i];
// v[i]-=cost;
// }
// }
// ans-=v[i];
// }
}
}
cout<<ans<<endl;
return 0;
}