Submission #1221898

#TimeUsernameProblemLanguageResultExecution timeMemory
1221898trideserMonster Game (JOI21_monster)C++20
0 / 100
59 ms1532 KiB
#include "monster.h"
#include <bits/stdc++.h>
using namespace std;

unordered_map<long long int, int> queries;

bool Q(int a, int b) {
	//return Query(a, b);
	int qn = (((long long)a) * 100000) + b;
	if(queries.find(qn) == queries.end()) {
		queries[qn] = Query(a, b);
	}
	return queries[qn];
}
vector<int> Solve(int N) {
	vector<int> monsters(N);
	vector<int> w1;
	vector<int> l1;
	for(int i = 0; i < N; i++) {
		int wins = 0;
		for(int j = 0; j < N; j++) {
			if(i != j) {
				if(Q(i, j))
					wins++;
			}
		}
		//cout << wins << " ";
		if(wins == 1)
			w1.push_back(i);
		else if(wins == N - 2)
			l1.push_back(i);
		else
			monsters[wins] = i;

	}
	
	if(N == 4) {
		
	}
	if(Q(w1[0], monsters[2])) {
		monsters[1] = w1[0];
		monsters[0] = w1[1];
	}
	else {
		monsters[0] = w1[0];
		monsters[1] = w1[1];
	}
	
	if(Q(l1[0], monsters[N - 3])) {
		monsters[N - 1] = l1[0];
		monsters[N - 2] = l1[1];
	}
	else {
		monsters[N - 2] = l1[0];
		monsters[N - 1] = l1[1];
	}
	vector<int> ret(N);
	for(int i = 0; i < monsters.size(); i++) {
		//cout << monsters[i];
		ret[monsters[i]] = i;

	}
	return ret;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...