Submission #375433

#TimeUsernameProblemLanguageResultExecution timeMemory
375433SeanliuMeetings (JOI19_meetings)C++14
29 / 100
2420 ms1088 KiB
#include "meetings.h"
#include <iostream>
#include <vector>
using namespace std;
 
const int maxN = 2e3 + 326;
vector<int> adj[maxN];
 
int Rand(){
	static int seed = 101;
	return seed = (seed * 3 + 1) % 0xdefaced;
}
 
void solve(vector<int> vec){
	//cout << "vec = "; for(int x : vec) cout << x << " "; cout << endl;
	if(vec.size() == 1) return;
	if(vec.size() == 2){
		//cout << "Bridging: " << vec[0] << ", " << vec[1] << endl;
		if(vec[0] > vec[1]) swap(vec[0], vec[1]);
		Bridge(vec[0], vec[1]);
		return;
	}
	int cur = vec[1];
	for(int i = 2; i < (int)vec.size(); i++){
		int res = Query(vec[0], cur, vec[i]);
		if(res == vec[i]) cur = res;
	}
	//cout << "Bridging: " << vec[0] << ", " << cur << endl;
	vector<int> l, r;
	l.push_back(vec[0]);
	r.push_back(cur);
	for(int i = 1; i < (int)vec.size(); i++) if(vec[i] != cur){
		int res = Query(vec[0], cur, vec[i]);
		if(res == vec[0]) l.push_back(vec[i]);
		else r.push_back(vec[i]);
	}
	solve(l);
	solve(r);
	if(vec[0] > cur) swap(vec[0], cur);
	Bridge(vec[0], cur);
}
 
void Solve(int N){
	vector<int> jizz = vector<int>();
	for(int i = N - 1; i >= 0; i--) jizz.push_back(i);
	solve(jizz);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...