147892025-02-02 17:07:06KateTaylorKövetkező permutáció (50 pont)cpp17Wrong answer 31/504ms596 KiB
#include <iostream>
#include <vector>
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 ptr = p[n - 1 - len] - 1;
	for (int i = n - len; i < n; i++) {
		while (true) {
			ptr--;
			if (ptr == -1) ptr = n - 1;
			if (!used[ptr]) {
				used[ptr] = true;
				p[i] = ptr + 1;
				break;
			}
		}
	}
	for (int x : p) cout << x << " ";
	return 0;
}
SubtaskSumTestVerdictTimeMemory
base31/50
1Accepted0/01ms316 KiB
2Accepted0/03ms316 KiB
3Wrong answer0/11ms316 KiB
4Accepted1/11ms316 KiB
5Accepted1/11ms316 KiB
6Accepted1/11ms508 KiB
7Wrong answer0/21ms316 KiB
8Accepted2/21ms316 KiB
9Wrong answer0/21ms316 KiB
10Wrong answer0/21ms500 KiB
11Accepted1/11ms316 KiB
12Accepted1/11ms316 KiB
13Accepted1/11ms596 KiB
14Accepted1/11ms316 KiB
15Wrong answer0/31ms316 KiB
16Accepted3/31ms316 KiB
17Accepted3/31ms316 KiB
18Accepted3/32ms316 KiB
19Accepted3/34ms428 KiB
20Wrong answer0/34ms472 KiB
21Wrong answer0/34ms500 KiB
22Accepted3/34ms508 KiB
23Wrong answer0/34ms476 KiB
24Accepted3/34ms436 KiB
25Accepted2/24ms316 KiB
26Accepted2/24ms508 KiB