Submission #991987

#TimeUsernameProblemLanguageResultExecution timeMemory
991987theboatmanHokej (COCI17_hokej)C++17
72 / 120
95 ms18344 KiB
#include <bits/stdc++.h> using namespace std; struct Player { int power; int stamina; int id; }; struct Swap { int time; int from; int to; }; void solve() { int m, n; cin >> m >> n; vector <Player> players(n); for (int i = 0; i < n; i++) { cin >> players[i].power >> players[i].stamina; players[i].id = i; } sort(players.begin(), players.end(), [](const Player &a, const Player &b) { return a.power > b.power; }); int ykFree = 0; vector <int> a(6 * m); long long sum = 0; for (auto player : players) { while(ykFree < 6 * m && player.stamina) { player.stamina--; a[ykFree] = player.id; sum += player.power; ykFree++; } } vector <int> startTeam(6); for (int i = 0; i < 6; i++) { startTeam[i] = a[i * m]; } vector <Swap> swaps; for (int i = m * 6 - 1; i > -1; i--) { if (i % m == 0) { continue; } if (a[i - 1] != a[i]) { swaps.push_back({i % m - 1, a[i - 1], a[i]}); } } stable_sort(swaps.begin(), swaps.end(), [](const Swap &a, const Swap &b) { return a.time < b.time; }); cout << sum << "\n"; for (auto i : startTeam) { cout << i + 1 << " "; } cout << "\n"; cout << swaps.size() << "\n"; for (auto i : swaps) { cout << i.time + 1 << " " << i.from + 1 << " " << i.to + 1 << "\n"; } } int main() { cin.tie(0); ios::sync_with_stdio(0); solve(); }
#Verdict Execution timeMemoryGrader output
Fetching results...