#include "tickets.h"
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
#define ll long long
int const N=1510;
ll mul(ll a,ll b)
{
	return a*b;
}
long long find_maximum(int k, vector<vector<int>> a) {
	int n = a.size();
	int m = a[0].size();
	vector<pair<ll,int>>pq;
	vector<vector<int>>ret(n,vector<int>(m,-1));
	set<pair<int,int>>cnt;
	int l[n],r[n];
	ll ans=0;
	for (int i=0;i<n;i++)
	{
		l[i]=0,r[i]=m-1;
		int f=0;
		for (int j=0;j<m;j++)
			f+=(a[i][j]==0);
		cnt.insert({f,i});
	}
	for (int index=0;index<k;index++)
	{
		vector<int>g;
		vector<int>f;
		for (int i=0;i<n/2;i++)
		{
			g.push_back((*rbegin(cnt)).second);
			f.push_back((*rbegin(cnt)).first);
			cnt.erase(*rbegin(cnt));
		}
		int cn=0;
		for (auto i:g)
		{
			cn+=(a[i][l[i]]==0);
			ret[i][l[i]]=index;
			l[i]++;
		}
		for (auto [j,i]:cnt)
		{
			cn+=(a[i][r[i]]==0);
			ret[i][r[i]]=index;
			r[i]--;
		}
		ans+=min(n-cn,cn);
		for (int i=0;i<n/2;i++)
			cnt.insert({f[i]-1,g[i]});
	}
	allocate_tickets(ret);
	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... |