Submission #1246853

#TimeUsernameProblemLanguageResultExecution timeMemory
1246853qwushaCarnival Tickets (IOI20_tickets)C++20
0 / 100
0 ms328 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); 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; } vector<vector<ll>> stuff; 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}); } sort(stuff.rbegin(), stuff.rend()); for (int j = 0; j < k / 2; j++) { sum += stuff[j][0]; result[i][a[i][stuff[j][1]].se] = -1; result[i][a[i][stuff[j][2]].se] = 0; } res += sum; for (int j = 0; j < m; j++) { if (result[i][j] == 1) { big[i].push_back(j); result[i][j] = 0; } else if (result[i][j] == 0) { sma[i].push_back(j); } } } 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...