#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]);
}
}
auto itMax = max_element(cumul.begin(), cumul.end());
auto itMinAvant = min_element(cumul.begin(), itMax + 1);
auto itMinApres = min_element(itMax, cumul.end());
long long valMax = *itMax - *itMinAvant;
long long valMin = *itMinApres - *itMinAvant;
long long total = cumul.back() - *itMinAvant;
long long delta = max(0ll, valMax - bornes[pos]);
if(valMin - delta >= 0) {
final[pos] = cumul.back() - delta;
} else {
final[pos] = min<long long>(bornes[pos], total - valMin);
}
}
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... |