Submission #440642

#TimeUsernameProblemLanguageResultExecution timeMemory
440642peijarCandies (JOI18_candies)C++17
100 / 100
693 ms28500 KiB
#include <bits/stdc++.h> #define int long long using namespace std; signed main(void) { ios_base::sync_with_stdio(false); cin.tie(0); int nbElem; cin >> nbElem; vector<int> val(nbElem); for (auto &v : val) cin >> v; set<pair<int, int>> choices, revChoices; for (int iEl = 0; iEl < nbElem; ++iEl) { choices.emplace(val[iEl], iEl); revChoices.emplace(iEl, val[iEl]); } choices.emplace(-1e18, -1); choices.emplace(-1e18, nbElem); revChoices.emplace(-1, -1e18); revChoices.emplace(nbElem, -1e18); int curRet = 0; for (int prend = 1; prend <= (nbElem + 1) / 2; ++prend) { auto [gain, pos] = *choices.rbegin(); curRet += gain; cout << curRet << '\n'; if (prend + 1 > (nbElem + 1) / 2) break; choices.erase({gain, pos}); revChoices.erase({pos, gain}); auto it = revChoices.lower_bound({pos, -(int)1e18}); it--; int gainNext = -gain; gainNext += it->second; choices.erase({it->second, it->first}); revChoices.erase(it++); gainNext += it->second; choices.erase({it->second, it->first}); revChoices.erase(it); choices.emplace(gainNext, pos); revChoices.emplace(pos, gainNext); } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...