65 2021. 01. 09 16:26:43 Kevinke12 Inverzió cpp11 Időlimit túllépés 46/50 547ms 13844 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
using namespace std;

vector<int> t;
int dp[500005];
int hely[500005];
int N, kezd=-1, veg=-200000, be;

int Melyik(int szam)
{
    for(int i = szam+1; i <= N; i++)
    {
        if(dp[i]!=0)
            return i;
    }
    return szam;
}

int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(0); cout.tie(0);

    cin >> N;
    for(int i = 0; i < N; i++)
    {
        cin >> be;
        t.push_back(be);
        hely[be]=i;

        dp[t[i]]=t[i]; //onmaga
        dp[t[i]] = dp[Melyik(t[i])];

        if(abs(hely[t[i]]-hely[dp[t[i]]]) > veg-kezd)
        {
            kezd=min(hely[t[i]], hely[dp[t[i]]]);
            veg=max(hely[t[i]], hely[dp[t[i]]]);
        }
    }
    /*for(int i = 1; i <= N; i++)
    {
        if(abs(hely[i]-hely[dp[i]]) > veg-kezd)
        {
            kezd=min(hely[i], hely[dp[i]]);
            veg=max(hely[i], hely[dp[i]]);
        }
    }*/
    if((kezd==-1) || (kezd==veg))
        cout << "-1\n";
    else
        cout << kezd+1 << " " << veg+1 << "\n";
    return 0;
}
Részfeladat Összpont Teszt Verdikt Idő Memória
base 46/50
1 Elfogadva 0/0 2ms 1832 KiB
2 Elfogadva 0/0 14ms 3308 KiB
3 Elfogadva 1/1 1ms 1916 KiB
4 Elfogadva 2/2 1ms 1936 KiB
5 Elfogadva 7/7 1ms 1940 KiB
6 Elfogadva 2/2 8ms 3336 KiB
7 Időlimit túllépés 0/2 500ms 13740 KiB
8 Elfogadva 2/2 103ms 13788 KiB
9 Elfogadva 2/2 100ms 13824 KiB
10 Elfogadva 2/2 87ms 13584 KiB
11 Elfogadva 2/2 86ms 13744 KiB
12 Elfogadva 2/2 93ms 13824 KiB
13 Elfogadva 2/2 92ms 13748 KiB
14 Elfogadva 2/2 83ms 13840 KiB
15 Elfogadva 2/2 391ms 13776 KiB
16 Elfogadva 2/2 94ms 13804 KiB
17 Elfogadva 2/2 85ms 13844 KiB
18 Elfogadva 2/2 85ms 13780 KiB
19 Elfogadva 3/3 377ms 13772 KiB
20 Elfogadva 3/3 490ms 13812 KiB
21 Elfogadva 2/2 497ms 13772 KiB
22 Elfogadva 2/2 90ms 13836 KiB
23 Elfogadva 2/2 101ms 13832 KiB
24 Időlimit túllépés 0/2 547ms 1044 KiB