148092025-02-02 20:56:47KateTaylorKövetkező permutáció (50 pont)cpp17Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/03ms316 KiB
3Elfogadva1/11ms332 KiB
4Elfogadva1/11ms508 KiB
5Elfogadva1/11ms316 KiB
6Elfogadva1/11ms316 KiB
7Elfogadva2/21ms500 KiB
8Elfogadva2/21ms316 KiB
9Elfogadva2/21ms316 KiB
10Elfogadva2/21ms316 KiB
11Elfogadva1/11ms316 KiB
12Elfogadva1/11ms316 KiB
13Elfogadva1/11ms328 KiB
14Elfogadva1/11ms316 KiB
15Elfogadva3/31ms364 KiB
16Elfogadva3/31ms508 KiB
17Elfogadva3/31ms316 KiB
18Elfogadva3/32ms316 KiB
19Elfogadva3/34ms316 KiB
20Elfogadva3/34ms316 KiB
21Elfogadva3/34ms316 KiB
22Elfogadva3/34ms316 KiB
23Elfogadva3/34ms548 KiB
24Elfogadva3/34ms316 KiB
25Elfogadva2/24ms368 KiB
26Elfogadva2/24ms316 KiB