제출 #1362695

#제출 시각아이디문제언어결과실행 시간메모리
1362695maya_s카니발 티켓 (IOI20_tickets)C++20
27 / 100
212 ms69140 KiB
#include "tickets.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;

long long find_maximum(int k, vector<vector<int>> X) {
	ll n = X.size(), m = X[0].size();
	vector<vector<int>> allocations(n, vector<int>(m, -1));
	vector<vector<ll>> x(n, vector<ll>(m));
	for(ll i = 0; i < n; i++) for(ll j = 0; j < m; j++) x[i][j] = X[i][j];
	vector<ll> ma(n), mi(n);
	vector<pll> sum(n);
	ll ans = 0;
	for(ll i = 0; i < n; i++) {
		ma[i] = *max_element(x[i].begin(), x[i].end()), mi[i] = *min_element(x[i].begin(), x[i].end());
		ans -= mi[i];
		sum[i] = {ma[i] + mi[i], i};
	}
	sort(sum.begin(), sum.end());
	while(sum.size() > (n+1)/2) {
		auto[s, i] = sum.back(); sum.pop_back();
		allocations[i][max_element(x[i].begin(), x[i].end()) - x[i].begin()] = 0;
		ans += s;
	}
	for(auto[s, i]: sum) allocations[i][min_element(x[i].begin(), x[i].end()) - x[i].begin()] = 0;
	if(n % 2 == 1){
		pll max_of_min = {0, 0};
		for(auto[s, i]: sum) max_of_min = max(max_of_min, {mi[i], i});
		ans += max_of_min.first;
	}
	allocate_tickets(allocations);
	return ans;
}
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…
#결과 실행 시간메모리채점기 출력
결과를 불러오는 중입니다…