Submission #1201394

#TimeUsernameProblemLanguageResultExecution timeMemory
1201394_rain_Rainy Markets (CCO22_day1problem2)C++20
5 / 25
321 ms77020 KiB
#include<bits/stdc++.h>
using namespace std;
typedef long long LL;

const int N=(int)1e6;
#define move asdasdsa
int b[N+2],p[N+2],u[N+2],bb[N+2]={},pp[N+2]={};
LL move[N+2]={},stay[N+2]={},buy[N+2]={},pre[N+2]={};
LL n,ans=0;

int main(){
	ios::sync_with_stdio(false);
	cin.tie(0) ; cout.tie(0);
	if (fopen("main.inp","r")){
		freopen("main.inp","r",stdin);
	//	freopen("main.out","w",stdout);
	}
	
	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];
	for(int i=1;i<n;++i) bb[i]=b[i];
	for(int i=1;i<=n;++i) move[i]=stay[i]=buy[i]=0;
	vector<int>stk;
	for(int i=1;i<n;++i){
		pp[i]=p[i];
		int x=min(pp[i],b[i]);
		pp[i]-=x,b[i]-=x;
		stk.push_back(i);
		stay[i]=x;
		while (stk.size() && pp[i]>b[i+1]){
			int last=stk.back();
			int addmore=min(pp[i]-b[i+1],u[last]);
			u[last]-=addmore,pp[i]-=addmore;
			buy[last]+=addmore;
			pre[last+1]+=addmore,pre[i+1]-=addmore;
			ans+=addmore;
			if (u[last]==0) stk.pop_back();
		}
		if (pp[i]>b[i+1]){
			cout<<"NO\n";
			return 0;
		}
		b[i+1]-=pp[i];
		u[i]=min(u[i],pp[i]);
	}
	cout<<"YES\n";
	cout<<ans<<'\n';
	for(int i=1;i<n;++i){
		pre[i]+=pre[i-1];
		stay[i]+=pre[i];
		cout<<stay[i]<<' '<<buy[i]<<' '<<p[i]-stay[i]-buy[i]<<'\n';
	}
}

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:15:24: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   15 |                 freopen("main.inp","r",stdin);
      |                 ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...