#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 time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |