Submission #1294623

#TimeUsernameProblemLanguageResultExecution timeMemory
1294623daotuankhoiCarnival Tickets (IOI20_tickets)C++20
100 / 100
472 ms93288 KiB
#include "tickets.h" #include <bits/stdc++.h> using namespace std; long long find_maximum(int k, vector<vector<int>> x) { int n = x.size(); int m = x[0].size(); vector<vector<int>> answer(n, vector<int>(m, -1)); vector<vector<bool>> mark(n, vector<bool>(k)); vector<pair<long long, int>> val; vector<int> big(n, k), small(n, 0); long long sum = 0; for (int i = 0; i < n; i++) { for (int j = m - k; j < m; j++) { sum += x[i][j]; val.emplace_back(x[i][j] + x[i][j - m + k], i); } } sort(val.begin(), val.end()); for (int i = 0; i < ((n * k) >> 1); i++) { sum -= val[i].first; big[val[i].second]--; small[val[i].second]++; } int gr = 0; for (int i = 0; i < n; i++) { for (int j = 0; j < small[i]; j++) { mark[i][answer[i][j] = gr] = 1; gr++; if (gr >= k) gr = 0; } } for (int i = 0; i < n; i++) { gr = 0; for (int j = m - big[i]; j < m; j++) { while (mark[i][gr]) gr++; answer[i][j] = gr++; } } allocate_tickets(answer); 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...