145982025-01-20 09:20:03RRoliKövetkező permutáció (50 pont)cpp17Futási hiba 0/50272ms16184 KiB
#include <bits/stdc++.h>
using namespace std;

int n;
vector<int> v, ln, lk;
vector<bool> sz;

int kov(int k, int p) {
	k++;
	while(k <= n && sz[k] || (p >= 1 && k < ln[p-1] && k > lk[p-1])) k++;
	return k;
}

int main() {
	cin >> n;
	v.resize(n+1); 
	ln.resize(n+1); 
	lk.resize(n+1);
	sz.resize(n+1, true);
	for(int i = 1; i <= n; i++) cin >> v[i];

	ln[1] = v[1];
	for(int i = 2; i <= n; i++) ln[i] = max(v[i], ln[i-1]);
	lk[1] = v[1];
	for(int i = 2; i <= n; i++) lk[i] = min(v[i], lk[i-1]);

	int p = n;
	int t = 0;
	while(p <= n && n >= 1 && t < 100) {
		int x = kov(v[p], p);
		if(x > n) {
			sz[v[p]] = false;
			v[p] = 0;
			p--;
		} else {
			sz[v[p]] = false;
			sz[x] = true;
			v[p] = x;
			ln[p] = max(v[p], ln[p-1]);//
			lk[p] = min(v[p], lk[p-1]);//
			p++;
		}

		for(int i = 1; i <= n; i++) cout << v[i] << ' ';
		cout << endl;
		for(int i = 1; i <= n; i++) cout << ln[i] << ' ';
		cout << endl;
		for(int i = 1; i <= n; i++) cout << lk[i] << ' ';
		cout << endl << endl;

		t++;
	}

	//for(int i = 1; i <= n; i++) cout << v[i] << ' ';

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base0/50
1Futási hiba0/02ms576 KiB
2Hibás válasz0/0156ms7476 KiB
3Hibás válasz0/11ms512 KiB
4Hibás válasz0/12ms316 KiB
5Hibás válasz0/11ms316 KiB
6Hibás válasz0/12ms316 KiB
7Hibás válasz0/21ms376 KiB
8Hibás válasz0/22ms316 KiB
9Hibás válasz0/21ms316 KiB
10Hibás válasz0/22ms316 KiB
11Hibás válasz0/13ms316 KiB
12Hibás válasz0/13ms316 KiB
13Hibás válasz0/13ms316 KiB
14Hibás válasz0/13ms316 KiB
15Hibás válasz0/37ms564 KiB
16Hibás válasz0/38ms680 KiB
17Hibás válasz0/327ms1180 KiB
18Hibás válasz0/352ms2544 KiB
19Hibás válasz0/3184ms8612 KiB
20Hibás válasz0/3208ms9780 KiB
21Hibás válasz0/3236ms11108 KiB
22Időlimit túllépés0/3259ms12196 KiB
23Időlimit túllépés0/3259ms12312 KiB
24Időlimit túllépés0/3261ms12340 KiB
25Időlimit túllépés0/2272ms16184 KiB
26Hibás válasz0/223ms1488 KiB