Submission #1239502

#TimeUsernameProblemLanguageResultExecution timeMemory
1239502MuhammadSaramCarnival Tickets (IOI20_tickets)C++20
0 / 100
0 ms328 KiB
#include "tickets.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

long long find_maximum(int k, vector<vector<int>> a)
{
	int n=a.size(), m=a[0].size();
	int id[n][2], cnt[n]={};
	set<pair<int,int>> se;
	for (int i=0;i<n;i++)
	{
		id[i][0]=0, id[i][1]=m-1;
		for (int x:a[i])
			cnt[i]+=x;
	}
	ll ans=0;
	vector<vector<int>> v(n, vector<int>(m,-1));
	for (int r=0;r<k;r++)
	{
		for (int i=0;i<n;i++)
			se.insert({cnt[i],i});
		int x=0, y=0;
		for (int i=0;i<n;i++)
		{
			pair<int,int> p=*se.begin();se.erase(p);
			int al=0;
			if (i<n/2)
			{
				if (m-r-p.first)
					x++;
				else
					al=1,y++, cnt[p.second]--;
			}
			else
			{
				if (p.first)
					al=1,y++, cnt[p.second]--;
				else
					x++;
			}
			ans+=min(x,y);
			if (!al) v[p.second][id[p.second][0]++]=r;
			else v[p.second][id[p.second][1]--]=r;
		}
	}
	allocate_tickets(v);
	return ans;
}
#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...