Submission #1257014

#TimeUsernameProblemLanguageResultExecution timeMemory
1257014antonnCarnival Tickets (IOI20_tickets)C++20
100 / 100
882 ms54572 KiB
#include "tickets.h" #include <bits/stdc++.h> #define all(a) a.begin(), a.end() using namespace std; typedef long long ll; ll find_maximum(int k, vector<vector<int>> a) { int n = a.size(); int m = a[0].size(); vector<int> up(n); vector<int> down(n); ll sum = 0; priority_queue<pair<ll, int>, vector<pair<ll, int>>, greater<pair<ll, int>>> pq; for (int i = 0; i < n; i++) { up[i] = k; down[i] = 0; for (int j = m - k; j < m; j++) { sum += a[i][j]; } pq.push({a[i][m - k] + a[i][0], i}); } for (int it = 1; it <= n * k / 2; it++) { pair<ll, int> x = pq.top(); pq.pop(); sum -= x.first; down[x.second]++; up[x.second]--; if (up[x.second] != 0) { pq.push({a[x.second][m - up[x.second]] + a[x.second][down[x.second]], x.second}); } } vector<vector<int>> sol(n, vector<int>(m, -1)); vector<int> small(k, 0), big(k, 0); set<pair<int, int>> set_small, set_big; for (int i = 0; i < k; i++) { set_small.insert({small[i], i}); set_big.insert({small[i], i}); } int i = n - 1; while (i >= 0) { int x = up[i]; int r = 0; vector<int> add_back; for (int it = 0; it < m; it++) { if (it < k - x) { int r = set_small.begin()->second; sol[i][it] = r; set_small.erase(set_small.begin()); set_big.erase({big[r], r}); add_back.push_back(r); small[r]++; } if (m - it <= x) { int r = set_big.begin()->second; sol[i][it] = r; set_big.erase(set_big.begin()); set_small.erase({small[r], r}); add_back.push_back(r); big[r]++; } } for (auto x : add_back) { set_small.insert({small[x], x}); set_big.insert({big[x], x}); } i--; } allocate_tickets(sol); return sum; }
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...