Submission #441540

#TimeUsernameProblemLanguageResultExecution timeMemory
441540azberjibiouDistributing Candies (IOI21_candies)C++17
8 / 100
245 ms13372 KiB
#include "candies.h" #define ll long long #include <bits/stdc++.h> using namespace std; const int mxN=200100; int N, Q; ll seg[4*mxN]; vector <int> ans; void upd(int idx, int s1, int e1, int s2, int e2, ll x) { if(s2<=s1 && e1<=e2) { seg[idx]+=x; return; } if(s2>e1 || s1>e2) return; int mid=(s1+e1)/2; upd(2*idx, s1, mid, s2, e2, x); upd(2*idx+1, mid+1, e1, s2, e2, x); } ll solv(int idx, int s, int e, int pos) { if(s==e) return seg[idx]; int mid=(s+e)/2; if(pos<=mid) return seg[idx]+solv(2*idx, s, mid, pos); else return seg[idx]+solv(2*idx+1, mid+1, e, pos); } std::vector<int> distribute_candies(vector <int> c, vector <int> l, vector <int> r, vector <int> v) { N=c.size(); Q=v.size(); ans.resize(N); for(int i=0;i<Q;i++) { upd(1, 0, N-1, l[i], r[i], v[i]); } for(int i=0;i<N;i++) ans[i]=min(solv(1, 0, N-1, i), (ll)c[i]); 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...