제출 #935219

#제출 시각아이디문제언어결과실행 시간메모리
935219MinaRagy06즐거운 행로 (APIO20_fun)C++17
0 / 100
1 ms348 KiB
#include <bits/stdc++.h>
#ifdef MINA
#include "grader.cpp"
#endif
#include "fun.h"
using namespace std;
#define ll long long

vector<int> ans;
set<int> rem;
int n;
void solve(int i) {
	if (rem.find(i) == rem.end()) {
		return;
	}
	if ((i << 1) > n) {
		ans.push_back(i);
		rem.erase(ans.back());
		return;
	}
	rem.erase(i);
	vector<int> v[2];
	for (auto j : rem) {
		if (j == i) continue;
		int diff = __lg(j) - __lg(i << 1);
		v[(j >> diff) != (i << 1)].push_back(j);
	}
	int cur = 0;
	while (v[1].size()) {
		ans.push_back(v[cur].back());
		rem.erase(ans.back());
		v[cur].pop_back();
		cur ^= 1;
	}
	solve(i << 1);
	ans.push_back(i);
}
vector<int> createFunTour(int _n, int q) {
	n = _n;
	for (int i = 1; i <= n; i++) {
		rem.insert(i);
	}
	solve(1);
	for (auto &i : ans) i--;
	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...