Submission #1243217

#TimeUsernameProblemLanguageResultExecution timeMemory
1243217pcpDistributing Candies (IOI21_candies)C++20
0 / 100
114 ms10940 KiB
#include "candies.h" #include <vector> #include <cstring> using namespace std; const int N=200050; int tree[4*N]; void updt(int node, int l, int r, int x, int y, int v){ int m = (l + r) / 2; if (l > y || r < x)return; if (l >= x && r <=y){ tree[node]+=v; return; } if (y>m)updt(node*2+1, m+1, r, x, y, v); if (x<=m)updt(node*2, l, m, x, y, v); } int candies(int node, int l, int r, int num){ int m = (l + r)/2; if (l==r)return tree[node]; if (num>m)return tree[node] + candies(node*2+1,m+1,r,num); return tree[node] + candies(node*2,l,m,num); } std::vector<int> distribute_candies(std::vector<int> c, std::vector<int> l, std::vector<int> r, std::vector<int> v) { int n = c.size(); memset(tree, 0, sizeof tree); for (int i = 0; i < l.size();++i)updt(1,0,n-1,l[i],r[i],v[i]); vector<int> rem; for (int i = 0; i < n;++i){ int a =candies(1,0,n-1,i); int b = c[i]; rem.push_back(min(a, b)); } return rem; }
#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...