Cod sursa(job #57865)

Utilizator bogdanhm999Casu-Pop Bogdan bogdanhm999 Data 3 mai 2007 11:49:48
Problema Secv Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include <stdio.h>
#include <stdlib.h>

    long n,a[5001],ind[5001],v[5001],i,j,q,r,p1,p2,min=10000;

int comp(const void* n1,const void* n2){
    return (a[*((long*)n1)]-a[*((long*)n2)]);
}

int main(){
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    
    scanf("%ld",&n);
    for (i=1;i<=n;i++){scanf("%ld",&a[i]);ind[i]=i;}
    
    qsort(ind,n+1,sizeof(long),comp);
    
    v[1]=a[ind[1]];q=1;
    for (i=2;i<=n;i++)
        if (a[ind[i-1]]!=a[ind[i]]){q++;v[q]=a[ind[i]];}
    /*    
    for (i=1;i<=n;i++)printf("%ld ",a[ind[i]]);
    printf("\n");
    
    for (i=1;i<=q;i++)printf("%ld ",v[i]);
    printf("\n");
    */
    for (i=1;i<=n-q+1;i++)
        if (a[i]==v[1]){
           r=2;
           for (j=i+1;j<=n;j++)
               if (a[j]==v[r]){r++;if (r==q+1)break;}
           if (r==q+1)
              if (j-i+1<min){min=j-i+1;p1=i;p2=j;}
        }
    
    //for (i=p1;i<=p2;i++)printf("%ld ",a[i]);
    printf("%ld",min);
    printf("\n");
    
    return 0;
}