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...