제출 #1243648

#제출 시각아이디문제언어결과실행 시간메모리
1243648Arturgo사탕 분배 (IOI21_candies)C++20
3 / 100
5090 ms11100 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]); } } 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 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...