Cod sursa(job #2296149)

Utilizator Andrei-27Arhire Andrei Andrei-27 Data 4 decembrie 2018 15:18:56
Problema Secv Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>

using namespace std ;

const int NR = 5005 ;

int maxim = ( 1 << 30 ) ;

ifstream f ("secv.in") ;
ofstream g ("secv.out") ;

vector < int > a ( NR ) ;
vector < int > d ( NR , 1 ) ;
vector < int > l ( NR , 1 ) ;
int s [ NR ] ;

int main ()
{
    int n , cnt = 1 ; f >> n ;
    
    for ( int i = 1 ; i <= n ; ++ i  )  f >> a [ i ] , s[ i ] = a [ i  ] , d [ i ] = i ;
    
    sort ( s + 1 , s + n + 1 ) ;
    
    for ( int i = 2 ; i <= n ; ++ i )  if ( s[ i ] != s [ i - 1 ] ) cnt ++ ;
    
    
    for ( int i = 2 ; i <= n ; ++ i )
    {
    for ( int j = 1 ; j <  i ; ++ j )
    {
        if ( l [ j ] + 1 >= l [ i ] && a [ i ] > a [ j ] )   l [ i ] = l [ j ] + 1 , d [ i ] = d [ j ] ;
        
    }
    if ( l [ i ] == cnt && maxim > i - d [ i ] )  maxim = i - d [ i ] + 1;
    
    
    }
    if ( maxim == ( 1 << 30 ) )	g << -1 << "\n" ;
    else					g << maxim << "\n" ;
    
    return 0 ;
}