141882025-01-10 08:34:20RRoliInverziócpp17Hibás válasz 36/50194ms6440 KiB
#include <bits/stdc++.h>
using namespace std;

int main() {
	int n;
	cin >> n;
	vector<int> v(n), ind(n+1), ext(n, -1);
	for(int i = 0; i < n; i++) {
		cin >> v[i];
		ind[v[i]] = i;
	}

	int ln = v[0], lk = v[n-1], l = 0, r = n-1;
	ext[0] = ln;
	ext[n-1] = lk;
	bool valt = true;
	while(l < r) {
		if(ln > lk) {
			int b = ind[ln], j = ind[lk];
			while(ext[b-1] > lk) b--;
			while(ext[j+1] < ln) j++;
			cout << b+1 << ' ' << j+1;
			break;
		}
		if(v[l+1] > lk) {
			l++;
			ln = max(ln, v[l]);
		} else if(v[r-1] < ln) {
			r--;
			lk = min(lk, v[r]);
		} else if(v[l+1] > ln) {
			l++;
			ln = max(ln, v[l]);
		} else if(v[r-1] < lk) {
			r--;
			lk = min(lk, v[r]);
		} else if(v[l+1] > v[l]) {
			l++;
			ln = max(ln, v[l]);
		} else if(v[r-1] < v[r]) {
			r--;
			lk = min(lk, v[r]);
		} else if(valt) {
			l++;
			ln = max(ln, v[l]);
			valt = !valt;
		} else {
			r--;
			lk = min(lk, v[r]);
			valt = !valt;
		}
		ext[l] = ln;
		ext[r] = lk;
	}
	if(l >= r) cout << -1;

	return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base36/50
1Hibás válasz0/01ms316 KiB
2Elfogadva0/017ms820 KiB
3Elfogadva1/11ms512 KiB
4Hibás válasz0/21ms316 KiB
5Elfogadva7/71ms316 KiB
6Hibás válasz0/217ms1000 KiB
7Elfogadva2/2187ms6280 KiB
8Elfogadva2/2192ms6292 KiB
9Hibás válasz0/2192ms6288 KiB
10Hibás válasz0/2188ms6288 KiB
11Hibás válasz0/2193ms6196 KiB
12Elfogadva2/2187ms6168 KiB
13Elfogadva2/2187ms6288 KiB
14Elfogadva2/2190ms6044 KiB
15Elfogadva2/2187ms6196 KiB
16Elfogadva2/2192ms6292 KiB
17Hibás válasz0/2187ms6292 KiB
18Elfogadva2/2189ms6196 KiB
19Elfogadva3/3187ms6284 KiB
20Elfogadva3/3185ms6284 KiB
21Elfogadva2/2185ms6284 KiB
22Elfogadva2/2190ms6296 KiB
23Hibás válasz0/2194ms6440 KiB
24Elfogadva2/2181ms6288 KiB