144552025-01-10 20:51:39zedInverziócpp17Elfogadva 50/50194ms4332 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){  // hatekony megoldas
    int n;
    cin >> n;
    vector<int> position_of(n + 1);
    vector<int> rightmost_index_of_smaller_items(n+1, -1);

    int number;
    for (int i=1;i<=n;i++){
        cin >> number;
        position_of[number] = i;
    }
//    for (int i=1;i<=n;i++){
//        cout << position_of[i] << " ";
//    }
//    cout << endl;
    for (int i=2;i<=n;i++){  // loop through numbers in ascending order and examine their position
        // check immediately previous item, and in one step all items smaller than previous item
        // check if there is an inversion first
        if(position_of[i-1] > position_of[i] or rightmost_index_of_smaller_items[i-1] > position_of[i] ){ // inversion
            rightmost_index_of_smaller_items[i] = max(position_of[i-1], rightmost_index_of_smaller_items[i-1]);
        }
    }
//    for (int i=1;i<=n;i++){
//        cout << i << " ";
//    }
//    cout << endl;
//    for (int i=1;i<=n;i++){
//        cout << position_of[i] << " ";
//    }
//    cout << endl;
//    for (int i=1;i<=n;i++){
//        cout << rightmost_index_of_smaller_items[i] << " ";
//    }
//    cout << endl;

    int best_inversion_left = -1;
    int best_inversion_right = -1;
    int best_inversion_size = -1;
    int current_inversion_size;
    for (int i=2;i<=n;i++){
        if(rightmost_index_of_smaller_items[i] != -1){
            int left = position_of[i];
            int right = rightmost_index_of_smaller_items[i];
            current_inversion_size = right - left;
            if (current_inversion_size > best_inversion_size){
                best_inversion_size = current_inversion_size;
                best_inversion_left = left;
                best_inversion_right = right;
            }
        }
    }
    if (best_inversion_size == -1){
        cout << -1;
    }else{
        cout << best_inversion_left << " " << best_inversion_right;
    }
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/01ms316 KiB
2Elfogadva0/017ms564 KiB
3Elfogadva1/11ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva7/71ms316 KiB
6Elfogadva2/217ms564 KiB
7Elfogadva2/2180ms4328 KiB
8Elfogadva2/2188ms4148 KiB
9Elfogadva2/2187ms4332 KiB
10Elfogadva2/2185ms4324 KiB
11Elfogadva2/2186ms4148 KiB
12Elfogadva2/2187ms4148 KiB
13Elfogadva2/2184ms4148 KiB
14Elfogadva2/2194ms4148 KiB
15Elfogadva2/2180ms4148 KiB
16Elfogadva2/2184ms4148 KiB
17Elfogadva2/2184ms4328 KiB
18Elfogadva2/2181ms4324 KiB
19Elfogadva3/3181ms4148 KiB
20Elfogadva3/3180ms4328 KiB
21Elfogadva2/2180ms4332 KiB
22Elfogadva2/2184ms4332 KiB
23Elfogadva2/2184ms4332 KiB
24Elfogadva2/2177ms4332 KiB