#include<bits/stdc++.h>
using namespace std;
typedef long long LL;
const int N=(int)1e6;
#define move asdasdasd
LL t[N+2],tt[N+2],p[N+2],b[N+2],u[N+2];
LL move[N+2],stay[N+2],buy[N+2];
int n;
LL tmp(){
for(int i=1;i<=n;++i) tt[i]=b[i];
for(int i=1;i<n;++i) t[i]=p[i];
for(int i=n-1;i>=1;--i){
t[i] -= min(tt[i+1],t[i]);
LL x = min(tt[i],t[i]);
t[i]-=x,tt[i]-=x;
}
LL sum=0;
for(int i=1;i<=n;++i) sum+=t[i];
return sum;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(0) ; cout.tie(0);
// freopen("main.inp","r",stdin);
cin>>n;
for(int i=1;i<=n;++i) cin>>b[i];
for(int i=1;i<n;++i) cin>>p[i];
for(int i=1;i<n;++i) cin>>u[i];
LL sum=0;
for(int i=1;i<n;++i) sum+=u[i];
if (tmp()>sum){
cout<<"NO";
return 0;
}
LL need=tmp();
cout<<"YES\n";
cout<<need<<'\n';
for(int i=n-1;i>=1;--i){
move[i]=min(p[i],b[i+1]) , p[i]-=min(p[i],b[i+1]);
LL x;
x=min(need,u[i]);
buy[i]=x,p[i]-=x,need-=x;
x=min(p[i],b[i]);
stay[i]=x,p[i]-=x,b[i]-=x;
assert(p[i]==0);
}
for(int i=1;i<n;++i) cout<<stay[i]<<' '<<buy[i]<<' '<<move[i]<<'\n';
}
# | 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... |