#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
ll find_maximum(int k, std::vector<std::vector<int>> x) {
int n = x.size();
int m = x[0].size();
vector<vector<bool>> use(n, vector<bool> (m, 0));
vector<vector<int>> answer(n, vector<int> (m, -1));
ll ans = 0;
vector<stack<int>> st(n);
vector<vector<pair<int, int>>> a(n);
priority_queue<pair<int, pair<int, int>>> q;
for (int i = 0; i < n; i++) {
vector<pair<int, int>> srt;
for (int j = 0; j < m; j++) srt.push_back({x[i][j], j});
sort(srt.begin(), srt.end());
for (int j = 0; j < k; j++) {
st[i].push(srt[j].second);
ans -= srt[j].first;
use[i][srt[j].second] = 1;
}
a[i] = srt;
}
for (int i = 0; i < n; i++) {
q.push({a[i].back().first + x[i][st[i].top()], {i, st[i].top()}});
}
int cnt = 0;
while (!q.empty()) {
auto [v, pr] = q.top();
auto [id, rw] = pr;
q.pop();
cnt++;
use[id][rw] = 0;
use[id][a[id].back().second] = 1;
ans += v;
a[id].pop_back();
st[id].pop();
if (!st[id].empty()) q.push({a[id].back().first + x[id][st[id].top()], {id, st[id].top()}});
if (cnt >= (n*k)/2) break;
}
vector<array<int, 3>> val;
for (int i = 0; i < n; i++) for (int j = 0; j < m; j++) if (use[i][j]) val.push_back({x[i][j], i, j});
sort(val.begin(), val.end(), [] (auto i, auto j) { return i[0] > j[0]; });
vector<queue<int>> stk(n), stk2(n);
for (int i = 0; i < val.size() / 2; i++) stk[val[i][1]].push(val[i][2]);
for (int i = val.size() / 2; i < val.size(); i++) stk2[val[i][1]].push(val[i][2]);
for (int rd = 0; rd < k; rd++) {
vector<pair<int, int>> sz;
for (int i = 0; i < n; i++) sz.push_back({stk[i].size(), i});
sort(sz.rbegin(), sz.rend());
for (int i = 0; i < n/2; i++) {
int tp = stk[sz[i].second].front();
stk[sz[i].second].pop();
answer[sz[i].second][tp] = rd;
}
for (int i = n/2; i < n; i++) {
int tp = stk2[sz[i].second].front();
stk2[sz[i].second].pop();
answer[sz[i].second][tp] = rd;
}
}
allocate_tickets(answer);
return ans;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |