#include <vector>
#include <algorithm>
using namespace std;
vector<int> distribute_candies(vector<int> c,vector<int> l,vector<int> r,vector<int> v) {
int n = c.size(), q = r.size();
vector<long long> boxes(n, 0);
if(n < 2000 && q < 2000) {
for (int i = 0; i < q; i++) {
int left = l[i], right = r[i], value = v[i];
if (value > 0) {
for (int j = left; j <= right; j++) {
boxes[j] = min(1LL * c[j], boxes[j] + value);
}
} else {
for (int j = left; j <= right; j++) {
boxes[j] = max(0ll, boxes[j] + value);
}
}
}
vector<int> result(n);
for (int i=0; i < n; i ++){
result[i] = boxes[i];
}
return result;
} else {
for (int i = 0; i < q; i++){
int left = l[i], right = r[i], value = v[i];
boxes[left] += value;
if (right + 1 < n) {
boxes[right + 1] -= value;
}
}
for (int i = 1; i < n; i++){
boxes[i] += boxes[i - 1];
boxes[i-1] = min(1LL * c[i-1], boxes[i - 1]);
}
boxes[n - 1] = min(1LL * c[n - 1], boxes[n - 1]);
vector<int> result(n);
for (int i=0; i < n; i ++){
result[i] = boxes[i];
}
return result;
}
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |