#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
int n, m, k;
vector<vector<ll>> x;
vector<vector<int>> getAllocation() {
	vector<vector<int>> alloc(n, vector<int>(m, 0));
	vector<tuple<int, int, int>> candies;
	for (int i = 0; i < n; i++) {
		candies.push_back(make_tuple(i, 0, m - 1));
	}
	for (int i = 1; i <= k; i++) {
		sort(candies.begin(), candies.end(), [&](auto t1, auto t2) {
			auto [i1, l1, r1] = t1;
			auto [i2, l2, r2] = t2;
			return x[i1][l1] + x[i1][r1] < x[i2][l2] + x[i2][r2];
		});
		for (int j = 0; j < n; j++) {
			auto &[idx, l, r] = candies[j];
			if (j < n / 2) alloc[idx][l++] = -i;
			else alloc[idx][r--] = i;
		}
	}
	return alloc;
}
ll find_maximum(int K, vector<vector<int>> X) {
	n = X.size(), m = X[0].size(), k = K;
	x.resize(n, vector<ll>(m));
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			x[i][j] = X[i][j];
		}
	}
	vector<vector<int>> alloc = getAllocation();
	ll score = 0;
	for (int i = 0; i < n; i++) {
		for (int j = 0; j < m; j++) {
			if (alloc[i][j] < 0) {
				score -= x[i][j];
				alloc[i][j] = -alloc[i][j] - 1;
			} else if (alloc[i][j] > 0) {
				score += x[i][j];
				alloc[i][j] = alloc[i][j] - 1;
			} else alloc[i][j] = -1;
		}
	}
	allocate_tickets(alloc);
	return score;
}
| # | 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... |