144252025-01-10 18:23:52VarszegiLeventeInverziócpp17Accepted 50/50192ms4168 KiB
#include <iostream>
#include <bits/stdc++.h>

using namespace std;
/*
3
1 2 3
*/
int main()
{
    int n; cin >> n;
    vector<int> position_of(n + 1);
    int nextnum_tpm;
    for(int i = 1; i <= n; i++){
        cin >> nextnum_tpm;
        position_of[nextnum_tpm] = i;
    }
    vector<int> rightmost_of_smaller_numbers(n + 1, -1);
    for(int i = 2; i <= n; i++){
        if(position_of[i] < position_of[i - 1] or position_of[i] < rightmost_of_smaller_numbers[i - 1]){
            rightmost_of_smaller_numbers[i] = max(position_of[i - 1], rightmost_of_smaller_numbers[i - 1]);
        }
    }
    int maximum_inversion = 0;
    int index1, index2;
    for(int i = 1; i <= n; i++){
        if(rightmost_of_smaller_numbers[i] != -1){
            if(rightmost_of_smaller_numbers[i] - position_of[i] > maximum_inversion){
                maximum_inversion = rightmost_of_smaller_numbers[i] - position_of[i];
                index1 = position_of[i];
                index2 = rightmost_of_smaller_numbers[i];
            }
        }
    }
    if(maximum_inversion > 0){
        cout << index1 << " " << index2;
    }
    else{
        cout << "-1";
    }
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/01ms508 KiB
2Accepted0/017ms756 KiB
3Accepted1/11ms316 KiB
4Accepted2/21ms316 KiB
5Accepted7/71ms316 KiB
6Accepted2/217ms608 KiB
7Accepted2/2182ms4164 KiB
8Accepted2/2190ms4148 KiB
9Accepted2/2192ms4148 KiB
10Accepted2/2185ms4160 KiB
11Accepted2/2188ms4148 KiB
12Accepted2/2185ms4116 KiB
13Accepted2/2186ms4160 KiB
14Accepted2/2186ms4148 KiB
15Accepted2/2184ms4160 KiB
16Accepted2/2187ms4148 KiB
17Accepted2/2188ms4144 KiB
18Accepted2/2186ms4164 KiB
19Accepted3/3184ms4168 KiB
20Accepted3/3184ms4148 KiB
21Accepted2/2185ms4156 KiB
22Accepted2/2185ms4164 KiB
23Accepted2/2187ms4148 KiB
24Accepted2/2180ms4160 KiB