Submission #1282265

#TimeUsernameProblemLanguageResultExecution timeMemory
1282265Faggi사탕 분배 (IOI21_candies)C++20
29 / 100
69 ms11996 KiB
#include <bits/stdc++.h> #define ll long long #define sz(x) int(x.size()) #define forn(i, n) for (i = 0; i < n; i++) #define all(x) x.begin(), x.end() #define pb push_back #define mp make_pair #define fr first #define se second using namespace std; vector<int> distribute_candies(vector<int> C, vector<int> L, vector<int> R, vector<int> V) { ll n=sz(C), q=sz(V), i; vector<ll>pref(q+1,0), ma(q+1), mi(q+1); for(i=1; i<=q; i++) pref[i]=pref[i-1]+V[i-1]; ma[q]=mi[q]=pref[q]; for(i=q-1; i>=0; i--) { ma[i]=max(ma[i+1],pref[i]); mi[i]=min(mi[i+1],pref[i]); } vector<int>ans(n); for(i=0; i<n; i++) { ll l=0, r=q+1, piv, pos=0; if(ma[0]-mi[0]<C[i]) { ans[i]=pref[q]-mi[0]; continue; } while(l<=r) { piv=(l+r)/2; if(ma[piv]-mi[piv]>=C[i]) { l=piv+1; pos=piv; } else r=piv-1; } if(pref[pos]<pref[q]) ans[i]=C[i]-(ma[pos]-pref[q]); else ans[i]=pref[q]-mi[pos]; } return ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...