Submission #1343649

#TimeUsernameProblemLanguageResultExecution timeMemory
1343649NonozeCarnival Tickets (IOI20_tickets)C++20
25 / 100
585 ms119184 KiB
#include "tickets.h"
#include <bits/stdc++.h>
#define fi first
#define se second
#define sz(x) (int)x.size()
#define cmin(a, b) a=min(a, b)
#define cmax(a, b) a=max(a, b)
#define all(x) (x).begin(),(x).end()
#define rall(x) (x).rbegin(),(x).rend()
#define pb push_back
#define int long long

using namespace std;

int n, m, k;
vector<vector<pair<int, int>>> a;

int find_maximum(signed K, vector<vector<signed>> x) {
	n=sz(x), m=sz(x[0]), k=K;
	a.resize(n, vector<pair<int, int>>(m));
	vector<pair<int, int>> vec; for (int i=0; i<n; i++) for (int j=0; j<m; j++) vec.pb({x[i][j], i});
	sort(all(vec));
	for (int i=0; i<n; i++) {
		for (int j=0; j<m; j++) a[i][j]={x[i][j], j};
		sort(all(a[i]));
	}
	vector<int> cnt(n), cur(n, 0);
	int res=0; for (int i=0; i<sz(vec); i++) {
		if (i<sz(vec)/2) res-=vec[i].fi, cnt[vec[i].se]++;
		else res+=vec[i].fi;
	}
	vector<pair<int, int>> order; for (int i=0; i<n; i++) order.pb({cnt[i], i});
	vector<vector<signed>> ans(n, vector<signed>(m, -1));
	for (int i=0; i<k; i++) {
		sort(rall(order));
		for (int j=0; j<n/2; j++) {
			ans[order[j].se][cur[order[j].se]++]=i;
			order[j].fi--;
		}
		for (int j=n/2; j<n; j++) {
			int idx=order[j].se;
			ans[idx][a[idx].back().se]=i;
			a[idx].pop_back();
		}
	}
	allocate_tickets(ans);
	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...