#include "candies.h"
#include <bits/stdc++.h>
using namespace std;
vector<int> distribute_candies(vector<int> bornes, vector<int> debs, vector<int> fins, vector<int> ajouts) {
vector<int> final(bornes.size(), -1);
for(int pos = 0;pos < (int)bornes.size();pos++) {
vector<long long> cumul = {0};
for(int iOperation = 0;iOperation < (int)ajouts.size();iOperation++) {
if(debs[iOperation] <= pos && pos <= fins[iOperation]) {
cumul.push_back(cumul.back() + ajouts[iOperation]);
}
}
long long mini = cumul.back(), maxi = cumul.back();
int premFail = cumul.size();
for(int p = (int)cumul.size() - 1;p >= 0;p--) {
mini = min(mini, cumul[p]);
maxi = max(maxi, cumul[p]);
if(maxi - mini >= bornes[pos]) {
premFail = p;
break;
}
}
if(maxi == cumul[premFail] || premFail == cumul.size()) {
if(premFail == cumul.size()) premFail = 0;
long long minApres = *min_element(cumul.begin() + premFail, cumul.end());
final[pos] = cumul.back() - minApres;
} else {
long long maxApres = *max_element(cumul.begin() + premFail, cumul.end());
final[pos] = bornes[pos] - (maxApres - cumul.back());
}
}
return final;
}
# | 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... |