Submission #1239534

#TimeUsernameProblemLanguageResultExecution timeMemory
1239534Muhammad_AneeqCarnival Tickets (IOI20_tickets)C++17
11 / 100
1 ms840 KiB
#include "tickets.h"
#include <vector>
#include <queue>
#include <iostream>
#include <algorithm>
using namespace std;
#define ll long long
int const N=1510;
long long dp[N]={};
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();
	long long ans=0,sm=0;
	bool vis[n]={};
	vector<vector<int>>ret(n,vector<int>(m,-1));
	int l[n],r[n];
	for (int i=0;i<n;i++)
	{
		l[i]=0;
		r[i]=m-1;
	}
	int sz=n/2;
	for (int index=0;index<k;index++)
	{
		vector<pair<ll,int>>pq;
		for (int j=0;j<n;j++)
		{
			vis[j]=0;
			pq.push_back({a[j][l[j]],j});
			pq.push_back({a[j][r[j]],j});
		}
		sort(begin(pq),end(pq));
		int cnt=0;
		vector<ll>cur;
		for (int i=0;i<pq.size();i++)
		{
			if (cnt==sz)
				break;
			if (vis[pq[i].second]) continue;
			cnt++;
			vis[pq[i].second]=1;
			int ind=pq[i].second;
			ret[ind][l[ind]]=index;
			l[ind]++;
			cur.push_back(pq[i].first);
		}
		for (int i=pq.size()-1;i>=0;i--)
		{
			if (cnt==n)
				break;
			if (vis[pq[i].second]) continue;
			cnt++;
			vis[pq[i].second]=1;
			int ind=pq[i].second;
			ret[ind][r[ind]]=index;
			r[ind]--;
			cur.push_back(pq[i].first);
		}
		sort(begin(cur),end(cur));
		for (auto j:cur)
			ans+=abs(cur[sz-1]-j);
	}
	allocate_tickets(ret);
	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...