Submission #495598

#TimeUsernameProblemLanguageResultExecution timeMemory
495598HalfDistributing Candies (IOI21_candies)C++17
11 / 100
105 ms12956 KiB
#include "candies.h"

#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
typedef unsigned long long int ull;
typedef long double ld;
#define REP(i,a,b) for(ll i=(ll) a; i<(ll) b; i++)
#define pb push_back
#define mp make_pair
#define pl pair<ll,ll>
#define ff first
#define ss second
#define whole(x) x.begin(),x.end()
#define DEBUG(i) cout<<"DEBUG "<<i<<endl
#define INF 500000000LL
#define EPS 0.00000001
#define pi 3.14159
ll mod=1000000007LL;

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();
    std::vector<int> s(n);
    int q = l.size();
    if(n*q<=100000000){
        for(int i = 0; i < n; i++){
            ll nc = 0;
            for(int j = 0; j < q; j++){
                if(l[j] <= i && i <= r[j]){
                    nc = max(0LL, min((ll)c[i], nc + (ll)v[j]));
                }
            }
            s[i] = nc;
        }
        return s;
    }
    bool t = true;
    for(int i = 0; i < q; i++){
        t = t && (v[i] > 0);
    }
    if(t){
        ll stp[n+1];
        memset(stp, 0, sizeof stp);
        for(int i = 0; i < q; i++){
            stp[l[i]] += v[i];
            stp[r[i]+1] -= v[i];
        }
        ll sm = 0;
        for(int i = 0; i < n; i++){
            sm += stp[i];
            s[i] = min((ll)c[i], sm);
        }
        return s;
    }
}

Compilation message (stderr)

candies.cpp: In function 'std::vector<int> distribute_candies(std::vector<int>, std::vector<int>, std::vector<int>, std::vector<int>)':
candies.cpp:56:1: warning: control reaches end of non-void function [-Wreturn-type]
   56 | }
      | ^
#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...