#include "candies.h"
#include<bits/stdc++.h>
using namespace std;
const int N = 200010;
long long pref[N][2];
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(), q = l.size();
for(int i = 0;i < q;i++){
if(v[i] > 0){
pref[l[i]][0] += v[i];
pref[r[i]+1][0] -= v[i];
}
else{
pref[l[i]][1] += v[i];
pref[r[i]+1][1] -= v[i];
}
}
std::vector<int> s;
long long res = 0, plus = 0, neg = 0;
for(int i = 0;i < n;i++){
if(res+pref[i][0] >= c[0]){
long long diff = c[0]-res;
res = c[0];
plus += pref[i][0]-diff;
}
else if(plus+pref[i][0] <= 0){
long long diff = plus+pref[i][0];
plus = 0;
res += diff;
}
else{
res += pref[i][0];
}
if(res+pref[i][1] <= 0){
long long diff = res;
res = 0;
neg += pref[i][1]+diff;
}
else if(neg+pref[i][1] >= 0){
long long diff = neg+pref[i][1];
neg = 0;
res += diff;
}
else{
res += pref[i][1];
}
// cout << res << ' ' << plus << ' ' << neg << '\n';
s.push_back(res);
}
return s;
}
# | 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... |