772021-01-10 12:01:20Babják PéterInverziócpp11Accepted 50/5092ms13580 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;		//Babják Péter-Bíróról visszatöltve 
int main()
{
    ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
    int n;cin>>n;
    int t[n];
    for(int i=0;i<n;i++)	//inverzió, mivel minden elem 1 szer szerepel,ezért "kifordíthatod" a bemenetet.
    {
        int b;
        cin>>b;b--;
        t[b]=i;
    }
    int mx=-1,ansi=-1,ansj=-1, ansm=-1;
    for(int i=0;i<n;i++)//ezért ahogy sorban haladsz a kifordított tömbön mindre igaz lesz hogy az előtte levő kisebb nála, és ha előrébb van 
    {
       if(t[i]>mx)//maximumot vizsgálsz
       {
           mx=t[i];
       }
       if(mx-t[i]>ansm)//biztosan van ilyen inverzió, mert mx kisebb szám mint az aktuális, így a maximális inverzió aminek i része az mx-t[i]
       {
           ansm=mx-t[i];
           ansi=mx;
           ansj=t[i];
       }
    }
    if(ansm<1)//-1 vagy 0, azaz vagy 1 elem volt vagy nem volt inverzió
    {
        cout<<-1<<endl;
        return 0;
    }
    cout<<ansj+1<<" "<<ansi+1<<endl;//futásidő: O(N)
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base50/50
1Accepted0/02ms1876 KiB
2Accepted0/06ms2604 KiB
3Accepted1/11ms2208 KiB
4Accepted2/21ms2196 KiB
5Accepted7/71ms2228 KiB
6Accepted2/26ms2812 KiB
7Accepted2/252ms6404 KiB
8Accepted2/283ms8172 KiB
9Accepted2/292ms8172 KiB
10Accepted2/274ms8180 KiB
11Accepted2/267ms8172 KiB
12Accepted2/271ms9264 KiB
13Accepted2/265ms10380 KiB
14Accepted2/265ms10384 KiB
15Accepted2/254ms10380 KiB
16Accepted2/276ms10380 KiB
17Accepted2/270ms10380 KiB
18Accepted2/268ms10388 KiB
19Accepted3/350ms10388 KiB
20Accepted3/350ms10388 KiB
21Accepted2/252ms10380 KiB
22Accepted2/265ms10392 KiB
23Accepted2/261ms10380 KiB
24Accepted2/250ms13580 KiB