Submission #1246877

#TimeUsernameProblemLanguageResultExecution timeMemory
1246877qwushaCarnival Tickets (IOI20_tickets)C++20
100 / 100
1226 ms259264 KiB
#include "tickets.h" #include <iostream> #include <bits/stdc++.h> #define fi first #define se second using namespace std; typedef long long ll; int inf = 1e9 + 7; ll find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<vector<pair<ll, ll>>> a(n, vector<pair<ll, ll>>(m)); vector<vector<int>> result(n, vector<int>(m, -1)); ll res = 0; vector<vector<int>> big(n), sma(n); vector<vector<ll>> stuff; for (int i = 0; i < n; i++) { for (int j =0; j < m; j++) { a[i][j] = {x[i][j], j}; } sort(a[i].rbegin(), a[i].rend()); ll sum = 0; for (int j = 0; j < k; j++) { sum += a[i][j].fi; result[i][a[i][j].se] = 1; } for (int j = k - 1; j >= 0; j--) { int ind = m - (k - j); stuff.push_back({-a[i][j].fi - a[i][ind].fi, j, ind, i}); } res += sum; } sort(stuff.rbegin(), stuff.rend()); for (int j = 0; j < n * k / 2; j++) { res += stuff[j][0]; result[stuff[j][3]][a[stuff[j][3]][stuff[j][1]].se] = -1; result[stuff[j][3]][a[stuff[j][3]][stuff[j][2]].se] = 0; } for (int i = 0; i < n; i++) { for (int j = 0; j < m; j++) { if (result[i][j] == 1) { big[i].push_back(j); } else if (result[i][j] == 0) { sma[i].push_back(j); } } } vector<pair<int, int>> numb(k), newb; for (int i = 0; i < k; i++) { numb[i] = {0, i}; } for (int i = 0; i < n; i++) { sort(numb.begin(), numb.end()); newb.clear(); int ind = 0; for (auto el : big[i]) { result[i][el] = numb[ind].se; newb.push_back({numb[ind].fi + 1, numb[ind].se}); ind++; } for (auto el : sma[i]) { result[i][el] = numb[ind].se; newb.push_back(numb[ind]); ind++; } numb = newb; } allocate_tickets(result); return res; }
#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...