Submission #490845

#TimeUsernameProblemLanguageResultExecution timeMemory
490845KarukDistributing Candies (IOI21_candies)C++17
11 / 100
100 ms10840 KiB
#include<bits/stdc++.h>
using namespace std;
vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v)
{
    int n=c.size();
    int q=l.size();
    if(n<=2000 && q<=2000)
    {
    vector<int>ans(n,0);
    for(int i=0;i<q;i++)
    {
        for(int j=l[i];j<=r[i];j++)
        {
            if(v[i]>0)ans[j]=min(c[j],ans[j]+v[i]);
            else ans[j]=max(0,ans[j]+v[i]);
        }
    }
    return ans;
    }
    vector<long long>add(n+1,0);
    vector<long long>ans(n,0);
    for(int i=0;i<q;i++)
    {
        add[l[i]]+=v[i];
        add[r[i]+1]-=v[i];
    }
    for(int i=0;i<n;i++)
    {
        if(i!=0)ans[i]=ans[i-1];
        ans[i]+=add[i];
    }
    for(int i=0;i<n;i++)
    {
        if(ans[i]>c[i])ans[i]=c[i];
    }
    vector<int>ca;
    for(long long i:ans)ca.push_back(i);
    return ca;
}
#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...