Submission #710984

#TimeUsernameProblemLanguageResultExecution timeMemory
710984penguin133Rainy Markets (CCO22_day1problem2)C++17
25 / 25
737 ms100944 KiB
#include <bits/stdc++.h>
using namespace std;

#define int long long
#define pi pair<int, int>
#define pii pair<int, pi>
#define fi first
#define se second
#ifdef _WIN32
#define getchar_unlocked _getchar_nolock
#endif
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());

int A[1000005], B[1000005], C[1000005], n;
pii ans[1000005];

int ft1[1000005], ft2[1000005];

void upd(int ft[], int l, int r, int v){
	for(;l<=n;l+=(l & -l))ft[l] += v;
	r++;
	for(;r<=n;r+=(r & -r))ft[r] -= v;
}

int qry(int ft[], int p){
	int res = 0;
	for(;p;p-=(p & -p))res += ft[p];
	return res;
}
int fin = 0;
void solve(){
	cin >> n;
	for(int i=1;i<=n;i++)cin >> A[i];
	for(int i=1;i<n;i++)cin >> B[i];
	for(int i=1;i<n;i++)cin >> C[i];
	
	stack <pi> st;
	for(int i=1;i<n;i++){
		int x = min(B[i], A[i]);
		ans[i].fi = x;
		B[i] -= x;
		A[i] -= x;
		x = min(B[i], A[i+1]);
		ans[i].se.se = x;
		B[i] -= x;
		A[i+1] -= x;
		if(C[i])st.push({C[i], i});
		while(!st.empty() && B[i]){
			pi tmp = st.top(); st.pop();
			x = min(tmp.fi, B[i]);
			B[i] -= x;
			tmp.fi -= x;
			fin += x;
			ans[tmp.se].se.fi += x;
			if(tmp.se < i)upd(ft1, tmp.se, i - 1, -x), upd(ft2, tmp.se + 1, i, x);
			if(tmp.fi)st.push(tmp);
		}
		/*
		for(int j=i;j>=1;j--){
			if(!B[i])break;
			x = min(B[i], C[j]);
			C[j] -= x;
			B[i] -= x;
			ans[j].se.fi += x;
			fin += x;
			for(int k=j;k<i;k++)ans[k].se.se -= x, ans[k+1].fi += x;
		}
		*/
		if(B[i]){
			cout << "NO\n";
			return;
		}
	}
	for(int i=1;i<=n;i++)ans[i].fi += qry(ft2, i), ans[i].se.se += qry(ft1, i);
	for(int i=1;i<=n;i++)if(ans[i].se.se < 0){cout << "NO"; return;}
	cout << "YES\n" << fin << '\n';
	for(int i=1;i<n;i++)cout << ans[i].fi << ' ' << ans[i].se.fi << ' ' << ans[i].se.se << '\n';
}

main(){
	ios::sync_with_stdio(0);cin.tie(0);
	int tc = 1;
	//cin >> tc;
	for(int tc1=1;tc1<=tc;tc1++){
		// cout << "Case #" << tc1 << ": ";
		solve();
	}
}

Compilation message (stderr)

Main.cpp:80:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   80 | main(){
      | ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...