제출 #441540

#제출 시각아이디문제언어결과실행 시간메모리
441540azberjibiou사탕 분배 (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...