제출 #358554

#제출 시각아이디문제언어결과실행 시간메모리
358554Jasiekstrz카니발 티켓 (IOI20_tickets)C++17
27 / 100
751 ms60396 KiB
#include "tickets.h"
#include<bits/stdc++.h>
using namespace std;
long long find_maximum(int k, vector<vector<int>> x)
{
	int n = x.size();
	int m = x[0].size();
	int i,j;
	vector<int> it[2];
	vector<vector<int>> ans;
	long long w=0;
	for(i=0;i<n;i++)
	{
		it[0].push_back(0);
		it[1].push_back(m-1);
	}
	for(i=0;i<n;i++)
	{
		ans.push_back({});
		for(j=0;j<m;j++)
			ans.back().push_back(-1);
	}
	while(k--)
	{
		priority_queue<pair<int,int>> pq;
		for(i=0;i<n;i++)
		{
			pq.push({-x[i][it[1][i]]-x[i][it[0][i]],i});
			w+=x[i][it[1][i]];
		}
		for(i=0;i<n/2;i++)
		{
			int xd=pq.top().second;
			w+=pq.top().first;
			pq.pop();
			ans[xd][it[0][xd]++]=k;
		}
		while(!pq.empty())
		{
			int xd=pq.top().second;
			pq.pop();
			ans[xd][it[1][xd]--]=k;
		}
	}
	allocate_tickets(ans);
	return w;
}
#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...