Submission #428345

#TimeUsernameProblemLanguageResultExecution timeMemory
428345egekabas카니발 티켓 (IOI20_tickets)C++14
27 / 100
636 ms52600 KiB
#include "tickets.h"
#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define ff first
#define ss second
#define pb push_back
#define mp make_pair
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<ll, ll> pll;
typedef pair<ull, ull> pull;
typedef pair<int, int> pii;
typedef pair<ld, ld> pld;

long long find_maximum(int k, vector<vector<int>> x) {
	int n = x.size();
	int m = x[0].size();
	vector<int> beg(n), fin(n);
	for(int i = 0; i < n; ++i){
		beg[i] = 0;
		fin[i] = m-1;
	}
	vector<vector<int>> ret(n, vector<int>(m, -1));
	ll ans = 0;
	for(int round = 0; round < k; ++round){
		vector<pii> vec;
		for(int i = 0; i < n; ++i)
			vec.pb({x[i][beg[i]]+x[i][fin[i]], i});
		sort(all(vec), greater<pii>());
		for(int i = 0; i < n; ++i){
			int idx = vec[i].ss;
			if(i < n/2){
				ans += x[idx][fin[idx]];
				ret[idx][fin[idx]] = round;
				--fin[idx];
			}
			else{
				ans -= x[idx][beg[idx]];
				ret[idx][beg[idx]] = round;
				++beg[idx];
			}
		}
	}
	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...