제출 #1326724

#제출 시각아이디문제언어결과실행 시간메모리
1326724BigBadBully사탕 분배 (IOI21_candies)C++20
3 / 100
5094 ms7324 KiB
#include "candies.h" #include <bits/stdc++.h> #define int long long #define pii pair<int,int> #define ff first #define ss second const int inf = 1e18; using namespace std; struct node{ int pref = 0,sub= 0,sum= 0,suf=0,mxp =0; node operator+(node b) { node res; res.sum = sum+b.sum; res.pref = min(pref,b.pref+sum); res.suf = min(b.suf,suf+b.sum); res.mxp=max(mxp,b.mxp+sum); res.sub = min({sub,b.sub,suf+b.pref}); return res; } }; struct seggy{ int n; vector<node> t; seggy(int sz){ n = sz; t.resize(2*n,node()); } void update(int i,int x) { node&a = t[i+=n]; a.sum = x; a.pref=min(x,0ll); a.suf = a.pref; a.sub = min(0ll,x); a.mxp = max(0ll,x); for(;i>1;i/=2) { if(i < (i^1)) t[i/2]=t[i]+t[i^1]; else t[i/2]=t[i^1]+t[i]; } } node query(int l,int r) { r++; if(l>r) return node(); node res; for(l+=n,r+=n;l<r;l/=2,r/=2) { if(l&1) res = res+t[l++]; if(r&1) res = res+t[--r]; } return res; } }; vector<signed> distribute_candies(vector<signed> c, vector<signed> l, vector<signed> r, vector<signed> v) { int n = c.size(); int q= l.size(); vector<signed> ans(n); for(int i = 0; i < q; i++) for(int j = l[i];j <= r[i];j++) ans[j] = max(0ll,min<int>(c[j],ans[j]+v[i])); return ans; } #undef int
#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...