Submission #924860

#TimeUsernameProblemLanguageResultExecution timeMemory
924860Programmer123Distributing Candies (IOI21_candies)C++17
11 / 100
82 ms9040 KiB
#include "candies.h"

#include <bits/stdc++.h>

typedef std::vector<int> ivec;
#define int long long

ivec distribute_candies(ivec c, ivec l,
                        ivec r, ivec v) {
    int N = c.size();
    int Q = l.size();
    ivec ans(N);
    if (N * Q <= 2000 * 2000) {
        for (int i = 0; i < N; ++i) {
            int val = 0;
            for (int j = 0; j < Q; ++j) {
                if (l[j] > i || r[j] < i) continue;
                val += v[j];
                if (val < 0) val = 0;
                if (val > c[i]) val = c[i];
            }
            ans[i] = val;
        }
        return ans;
    }
    bool pos = true;
    for (int i = 0; i < Q; ++i) {
        if (v[i] < 0) pos = false;
    }
    if (pos) {
        int diff[N + 1];
        for (int i = 0; i <= N; ++i) {
            diff[i] = 0;
        }
        for (int i = 0; i < Q; ++i) {
            diff[l[i]] += v[i];
            diff[r[i] + 1] -= v[i];
        }
        for (int i = 1; i <= N; ++i) {
            diff[i] += diff[i - 1];
        }
        for (int i = 0; i < N; ++i) {
            ans[i] = (signed) std::min<int>(diff[i], c[i]);
        }
        return ans;
    }
}

Compilation message (stderr)

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