Submission #1144756

#TimeUsernameProblemLanguageResultExecution timeMemory
1144756PagodePaivaCarnival Tickets (IOI20_tickets)C++20
25 / 100
338 ms62352 KiB
#include<bits/stdc++.h>
#include "tickets.h"
#include <vector>

using namespace std;

const int N = 1510;
vector <array <int, 2>> v;
int ans[N][N];
int l[N], r[N];

long long find_maximum(int k, std::vector<std::vector<int>> x) {
	memset(ans, -1, sizeof ans);
	int n = x.size();
	int m = x[0].size();
	for(int i = 0;i < n;i++){
		int cnt = 0;
		r[i] = m-1;
		for(int j = 0;j < m;j++)
			cnt += x[i][j];
		v.push_back({cnt, i});
	}
	long long res = 0;
	for(int turno = 0;turno < k;turno++){
		sort(v.begin(), v.end());
		for(int i = 0;i < n/2;i++){
			ans[v[i][1]][l[v[i][1]]] = turno;
			res -= x[v[i][1]][l[v[i][1]]]; 
			l[v[i][1]]++;
		}
		for(int i = n/2;i < n;i++){
			ans[v[i][1]][r[v[i][1]]] = turno;
			res += x[v[i][1]][r[v[i][1]]]; 
			r[v[i][1]]--;
			v[i][0]--;
			
		}
	}
	vector<vector<int>> answer;
	for(int i = 0;i < n;i++){
		vector <int> aux;
		for(int j = 0;j < m;j++){
			aux.push_back(ans[i][j]);
		}
		answer.push_back(aux);
	}
	allocate_tickets(answer);
	return res;
}
#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...