Submission #1243605

#TimeUsernameProblemLanguageResultExecution timeMemory
1243605ArturgoDistributing Candies (IOI21_candies)C++20
0 / 100
5089 ms8768 KiB
#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 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...