제출 #1139594

#제출 시각아이디문제언어결과실행 시간메모리
1139594stdfloatPermutation Recovery (info1cup17_permutation)C++20
0 / 100
1096 ms324 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;

#define sz(v)	(int)(v).size()
#define all(v)	(v).begin(), (v).end()

int n;

vector<bool> vis;

vector<int> a, p, v;

void f(int x) {
	if (x == n) {
		for (auto i : p)
			cout << i + 1 << ' ';
		exit(false);
	}

	for (int i = 0; i < n; i++) {
		if (vis[i]) continue;

		p[x] = i;
		v[x] = 1;
		for (int j = 0; j < x; j++)
			if (p[j] < i) v[x] += v[j];

		if (a[x] - (x ? a[x - 1] : 0) != v[x]) continue;

		vis[i] = true;
		
		f(x + 1);

		vis[i] = false;
	}
}

int main() {
	ios::sync_with_stdio(false); cin.tie(nullptr);

	cin >> n;

	a.assign(n, 0);
	for (auto &i : a)
		cin >> i;

	vis.assign(n, false);
	p = v = vector<int>(n);	
	f(0);
}
#Verdict Execution timeMemoryGrader output
Fetching results...