제출 #1200617

#제출 시각아이디문제언어결과실행 시간메모리
1200617_rain_Rainy Markets (CCO22_day1problem2)C++20
5 / 25
317 ms84740 KiB
#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,p[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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...