제출 #415905

#제출 시각아이디문제언어결과실행 시간메모리
415905abdzag카니발 티켓 (IOI20_tickets)C++17
11 / 100
4 ms972 KiB
#include<bits/stdc++.h>
#include "tickets.h"
#define rep(i,a,b) for(int i=int(a);i<int(b);i++)
#define rrep(i,a,b) for(int i=int(a);i>int(b);i--)
#define trav(a,v) for(auto& a: v)
#define sz(v) v.size()
#define all(v) v.begin(),v.end()
#define vi vector<int>

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
const long long inf = 1e15;

using namespace std;
vector<bool> visited(1e6);
vector<vector<ll>> g;
vector<ll> v;
ll curr = 0;
bool done = 1;

long long find_maximum(int k, std::vector<std::vector<int>> x) {
	vector<ll> v;
	ll n = x.size();
	ll m = x[0].size();
	ll ans = 0;
	std::vector<std::vector<int>> answer(x.size(),vector<int>(x[0].size(),-1));
	set<pair<ll, pair<ll, ll>>> greatest;
	set<pair<ll, pair<ll, ll>>> smallest;
	rep(i, 0, k) {
		v.clear();
		smallest.clear();
		greatest.clear();
		rep(j, 0, n) {
			rep(z, 0, m) {
				if (answer[j][z] == -1) {
					smallest.emplace(x[j][z], make_pair(j, z));
					break;
				}
			}
			rrep(z, m-1, -1) {
				if (answer[j][z] == -1) {
					greatest.emplace(-x[j][z], make_pair(j, z));
					break;
				}
			}
		}
		ll counter = 0;
		trav(a, smallest) {
			answer[a.second.first][a.second.second] = i;
			v.push_back(a.first);
			counter++;
			if (counter == k / 2)break;
		}
		counter = 0;
		trav(a, greatest) {
			if (answer[a.second.first][a.second.second] == -1) {
				answer[a.second.first][a.second.second] = i;
				v.push_back(-a.first);
				counter++;
			}
			if (counter == k / 2)break;
		}
		ll b = v[v.size() / 2];
		trav(a, v)ans += abs(a - b);
	}
	allocate_tickets(answer);
	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...