Cod sursa(job #66209)

Utilizator DastasIonescu Vlad Dastas Data 16 iunie 2007 15:41:17
Problema Secv Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>
#include <algorithm>
#define maxn 5002

FILE *in = fopen("secv.in","r"), *out = fopen("secv.out","w");

int n;
int a[maxn];
int b[maxn];
int c[maxn] = {0};

void read()
{
    fscanf(in, "%d", &n);

    for ( int i = 1; i <= n; ++i )
        fscanf(in, "%d", &a[i]), b[i] = a[i];


}

int main()
{
    read();

    std::sort(b, b+n+1);

    int k = 0;
    c[++k] = b[1];
    for ( int i = 2; i <= n; ++i )
        if ( b[i] != c[k] )
            c[++k] = b[i];

    int min = (1<<31)-1;

    for ( int i = 1; i <= n; ++i )
    {
        if ( a[i] == c[1] )
        {
            int cnt = 2;
            int l = 1;
            for ( int j = i + 1; j <= n; ++j )
            {
                ++l;
                if ( a[j] == c[cnt] )
                    ++cnt;
                if ( cnt-1 == k )
                {
                    if ( l < min )
                        min = l;
                    break;
                }
            }
        }
    }

    if ( min == (1<<31)-1 )
        fprintf(out, "%d\n", -1);
    else if ( min == 2 )
        fprintf(out, "%d\n", 1);
    else
        fprintf(out, "%d\n", min);


	return 0;
}