#include "bits/stdc++.h"
#include "tickets.h"
#define sz(x) (int)size(x)
#define all(x) begin(x), end(x)
#define rall(x) rbegin(x), rend(x)
using namespace std;
using ll = long long;
using pii = pair<int, int>;
const char nl = '\n';
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
long long find_maximum(int k, vector<vector<int>> x) {
int n = sz(x);
int m = sz(x[0]);
vector<int> vals;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
vals.push_back(x[i][j]);
sort(all(vals));
int X = vals[(n * m) / 2]; // >= X eh grande
long long ans = 0;
for (int i = 0; i < n / 2; i++)
ans -= vals[i];
for (int i = n / 2; i < n; i++)
ans += vals[i];
vector<vector<int>> a(n), b(n);
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (x[i][j] < X)
a[i].push_back(j);
else
b[i].push_back(j);
vector pos(n, vector<int>(m));
for (int vez = 0; vez < k; vez++) {
vector<int> ord(n);
iota(all(ord), 0);
sort(all(ord), [&](const int &i, const int &j){
return sz(b[i]) > sz(b[j]);
});
for (int i = 0; i < n / 2; i++) {
int id = ord[i];
pos[id][b[id].back()] = vez;
b[id].pop_back();
}
for (int i = n / 2; i < n; i++) {
int id = ord[i];
pos[id][a[id].back()] = vez;
a[id].pop_back();
}
}
allocate_tickets(pos);
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... |