141782025-01-10 08:13:11RRoliInverziócpp17Wrong answer 36/50192ms4344 KiB
#include <bits/stdc++.h>
using namespace std;

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

	int ln = v[0], lk = v[n-1], l = 0, r = n-1;
	bool valt = true;
	while(l < r) {
		if(ln > lk) {
			cout << ind[ln] << ' ' << ind[lk];
			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;
		}
	}
	if(l >= r) cout << -1;

	return 0;
}
SubtaskSumTestVerdictTimeMemory
base36/50
1Accepted0/01ms316 KiB
2Accepted0/017ms564 KiB
3Accepted1/11ms500 KiB
4Accepted2/21ms316 KiB
5Accepted7/71ms316 KiB
6Wrong answer0/217ms564 KiB
7Accepted2/2180ms4148 KiB
8Accepted2/2186ms4328 KiB
9Wrong answer0/2189ms4136 KiB
10Wrong answer0/2185ms4328 KiB
11Wrong answer0/2187ms4148 KiB
12Wrong answer0/2180ms4148 KiB
13Accepted2/2181ms4148 KiB
14Accepted2/2180ms4332 KiB
15Accepted2/2179ms4328 KiB
16Accepted2/2192ms4344 KiB
17Wrong answer0/2181ms4320 KiB
18Accepted2/2180ms4332 KiB
19Accepted3/3180ms4148 KiB
20Accepted3/3177ms4328 KiB
21Accepted2/2177ms4328 KiB
22Accepted2/2180ms4152 KiB
23Wrong answer0/2189ms4340 KiB
24Accepted2/2173ms4148 KiB