Cod sursa(job #2236036)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 27 august 2018 21:21:40
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
#define N 5005

using namespace std;

ifstream fin("secv.in") ;
ofstream fout("secv.out") ;

pair<int,int> a[N] ;
int v[N] , n ;

bool compar(pair<int,int> p1 , pair<int,int> p2 )
{
    return p1.first < p2.first ;
}

int main()
{
    int i , x , k = 0 , lg = 0 , minim , j ;
    fin >> n ;
    for ( i = 1 ; i <= n ; i++ )
    {
        fin >> x ;
        a[i] = make_pair(x,i) ;
    }
    sort(a+1,a+n+1,compar) ;
    a[0].first = -1 ;
    for ( i = 1 ; i <= n ; i++ )
    {
        if ( a[i].first > a[i-1].first )
            k++ ;
        v[a[i].second] = k ;
    }
    minim = 0x3f3f3f3f ;
    for ( i = 1 ; i <= n ; i++ )
    {
        if ( v[i] == 1 )
        {
            lg = 2 ;
            for ( j = i+1 ; j <= n && lg <= k ; j++ )
            {
                if ( v[j] == 1 && lg == 2 )
                    i = j ;
                if ( v[j] == lg )
                    lg++ ;
            }
            if ( lg > k )
                minim = min(minim,j-i) ;
        }
    }
    if ( minim == 0x3f3f3f3f )
        fout << "-1" ;
    else
        fout << minim ;
}