제출 #790066

#제출 시각아이디문제언어결과실행 시간메모리
790066mousebeaverDistributing Candies (IOI21_candies)C++17
11 / 100
89 ms14560 KiB
#define ll long long
#define pll pair<ll, ll>
#include "candies.h"
#include <bits/stdc++.h>
using namespace std;

std::vector<int> distribute_candies(vector<int> c, vector<int> l, vector<int> r, vector<int> v) 
{
    ll n = c.size();
    ll q = l.size();

    if(n <= 2000 && q <= 2000)
    {
        //Subtask 1
        vector<ll> a(n, 0);
        for(ll i = 0; i < q; i++)
        {
            for(ll j = l[i]; j <= r[i]; j++)
            {
                if(v[i] > 0)
                {
                    a[j] = min(a[j]+(ll) v[i], (ll) c[j]);
                }
                if(v[i] < 0)
                {
                    a[j] = max(a[j]+(ll) v[i], 0LL);
                }
            }
        }
        vector<int> output(n, 0);
        for(ll i = 0; i < n; i++)
        {
            output[i] = a[i];
        }
        return output;
    }
    if(*min_element(v.begin(), v.end()) > 0)
    {
        vector<ll> plus(n, 0);
        vector<ll> minus(n, 0);
        for(ll i = 0; i < q; i++)
        {
            plus[l[i]] += v[i];
            minus[r[i]] += v[i];
        }

        ll add = 0;
        vector<int> output(n);
        for(ll i = 0; i < n; i++)
        {
            add += plus[i];
            output[i] = (int) min(add, (ll) c[i]);
            add -= minus[i];
        }
        return output;
    }

    return {};
}
#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...