772021-01-10 12:01:20Babják PéterInverziócpp11Elfogadva 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;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base50/50
1Elfogadva0/02ms1876 KiB
2Elfogadva0/06ms2604 KiB
3Elfogadva1/11ms2208 KiB
4Elfogadva2/21ms2196 KiB
5Elfogadva7/71ms2228 KiB
6Elfogadva2/26ms2812 KiB
7Elfogadva2/252ms6404 KiB
8Elfogadva2/283ms8172 KiB
9Elfogadva2/292ms8172 KiB
10Elfogadva2/274ms8180 KiB
11Elfogadva2/267ms8172 KiB
12Elfogadva2/271ms9264 KiB
13Elfogadva2/265ms10380 KiB
14Elfogadva2/265ms10384 KiB
15Elfogadva2/254ms10380 KiB
16Elfogadva2/276ms10380 KiB
17Elfogadva2/270ms10380 KiB
18Elfogadva2/268ms10388 KiB
19Elfogadva3/350ms10388 KiB
20Elfogadva3/350ms10388 KiB
21Elfogadva2/252ms10380 KiB
22Elfogadva2/265ms10392 KiB
23Elfogadva2/261ms10380 KiB
24Elfogadva2/250ms13580 KiB