Cod sursa(job #482667)

Utilizator SpiderManSimoiu Robert SpiderMan Data 4 septembrie 2010 14:33:36
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.98 kb
# include <algorithm>
using namespace std;

const char FIN[] = "secv.in", FOU[] = "secv.out" ;
const int MAX = 5005, oo = 0x3f3f3f3f ;

int A[MAX], C[MAX] ;
int N, sol = oo ;

int main ( void ) {
    freopen ( FIN, "r", stdin ) ;

    scanf ( "%d", &N ) ;

    for ( int i = 1; i <= N; ++i ) {
        scanf ( "%d", A + i ) ;
        C[i] = A[i] ;
    }

    sort ( C + 1, C + N + 1 ) ;

    int M = unique ( C + 1, C + N + 1 ) - C - 1 ;

    for ( int i = N; i ; --i ) {
        if ( A[i] == C[M] ) {
            int poz = i, pozf = 1 ;
            for ( int j = M - 1; j ; --j ) {
                for ( ; poz && A[poz] != C[j] ; --poz ) ;
                if ( poz < 1 ) {
                    pozf = 0 ;
                    break ;
                }
            }
            if ( pozf && i - poz + 1 < sol ) {
                sol = i - poz + 1 ;
            }
        }
    }

    fprintf ( fopen ( FOU, "w" ) , "%d" , sol != oo ? sol : -1 ) ;

    return 0 ;
}