148092025-02-02 20:56:47KateTaylorKövetkező permutáció (50 pont)cpp17Accepted 50/504ms548 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> p(n);
	for (int i = 0; i < n; i++) cin >> p[i];
	vector<bool> used(n, true);
	used[p[n - 1] - 1] = false;
	int len = 0;
	for (int i = n - 2; i >= 0; i--) {
		len++;
		used[p[i] - 1] = false;
		if (p[i] < p[i + 1]) {
			p[i]++;
			while (used[p[i] - 1]) p[i]++;
			used[p[i] - 1] = true;
			break;
		}
	}
	int m = 0;
	for (int i = 0; i < n - len; i++) m = max(m, p[i]);
	int ptr = m - 1, add = -1;
	for (int i = n - len; i < n; i++) {
		while (true) {
			ptr += add;
			if (ptr == -1) {
				ptr = m;
				add = 1;
			}
			if (!used[ptr]) {
				used[ptr] = true;
				p[i] = ptr + 1;
				break;
			}
		}
	}
	for (int x : p) cout << x << " ";
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms316 KiB
2Accepted0/03ms316 KiB
3Accepted1/11ms332 KiB
4Accepted1/11ms508 KiB
5Accepted1/11ms316 KiB
6Accepted1/11ms316 KiB
7Accepted2/21ms500 KiB
8Accepted2/21ms316 KiB
9Accepted2/21ms316 KiB
10Accepted2/21ms316 KiB
11Accepted1/11ms316 KiB
12Accepted1/11ms316 KiB
13Accepted1/11ms328 KiB
14Accepted1/11ms316 KiB
15Accepted3/31ms364 KiB
16Accepted3/31ms508 KiB
17Accepted3/31ms316 KiB
18Accepted3/32ms316 KiB
19Accepted3/34ms316 KiB
20Accepted3/34ms316 KiB
21Accepted3/34ms316 KiB
22Accepted3/34ms316 KiB
23Accepted3/34ms548 KiB
24Accepted3/34ms316 KiB
25Accepted2/24ms368 KiB
26Accepted2/24ms316 KiB