Cod sursa(job #72239)

Utilizator andrei_infoMirestean Andrei andrei_info Data 13 iulie 2007 01:17:41
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.4 kb
//---------------------------------------------------------------------------

#include <values.h>
#include <stdio.h>
#include <stdlib.h>


int n,b[5000], a[5000], nc, lmin;

int uz ( int val )
{
        for (int i = 0; i< nc; i++)
                if (b[i] == val)
                        return 1;
        return 0;
}


void citire()
{
        freopen("secv.in","r",stdin);
        scanf("%d\n", &n);
        for (int i = 0 ; i< n; i++)
                {
                scanf("%d", &a[i]);
                if (!uz(a[i]))
                        b[nc++] = a[i];
                }
        fclose(stdin);
}

int comp(const void *a, const void *b)
{
    if( (*(int *)a) >  (*(int*)b)) return 1;
    return -1;
}

void calc()
{
        int j,k;

        lmin = MAXINT;
        for (int i =0 ; i<n; i++)
                if (a[i] == b[0] )
                {
                        for ( j=i+1, k=1; j< n && k < nc; j++)
                                if (a[j] ==b[k])
                                        k++;
                        if (k==nc && j-i < lmin) lmin = j-i;
                }
        if ( n==0) lmin=0;
        if (lmin == MAXINT) lmin = -1;
}

int main()
{
        citire();
        qsort(b,nc, sizeof(int), comp);
        calc();
        freopen("secv.out", "w", stdout);
        printf("%d", lmin);
        fclose(stdout);
        return 0;
}