Submission #1240060

#TimeUsernameProblemLanguageResultExecution timeMemory
1240060kaiboySwap (BOI16_swap)C++20
0 / 100
2 ms4932 KiB
#include <algorithm>
#include <iostream>
#include <vector>

using namespace std;

const int N = 200000;

vector<int> aa[N + 1];
bool used[N + 1];

int main() {
	ios_base::sync_with_stdio(false), cin.tie(NULL);
	int n; cin >> n;
	for (int i = 1; i <= n; i++) {
		int a; cin >> a;
		aa[i].push_back(a);
	}
	for (int i = 1; i <= n; i++) {
		int l = i << 1, r = l ^ 1, a_ = n + 1;
		for (int a : aa[i])
			if (!used[a])
				a_ = min(a_, a);
		if (l > n) {
			cout << a_ << ' ', used[a_] = true;
			continue;
		}
		int al = aa[l][0];
		if (r > n) {
			if (a_ < al) {
				cout << a_ << ' ', used[a_] = true;
				continue;
			}
			cout << al << ' ', used[al] = true;
			aa[l].clear();
			for (int a : aa[i])
				if (!used[a])
					aa[l].push_back(a);
			continue;
		}
		int ar = aa[r][0];
		if (a_ < al && a_ < ar) {
			cout << a_ << ' ', used[a_] = true;
			continue;
		}
		if (al < ar) {
			cout << al << ' ', used[al] = true;
			aa[l].clear();
			for (int a : aa[i])
				if (!used[a])
					aa[l].push_back(a);
			continue;
		}
		cout << ar << ' ', used[ar] = true;
		for (int a : aa[i])
			if (!used[a])
				aa[l].push_back(a);
		aa[r] = aa[l];
	}
	cout << '\n';
	return 0;
}
#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...