Cod sursa(job #176566)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 11 aprilie 2008 14:27:05
Problema Secv Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <cstdio>
int a[5005],b[5005],c[5005],n,m,l,sw;
void qsort(int ls,int ld){
     int i=ls,j=ld,x=b[(ls+ld)/2];
     do {while (b[i]<x) i++;
         while (b[j]>x) j--;
         if (i<=j) {int aux=b[i];
                    b[i]=b[j];
                    b[j]=aux;
                    i++;j--;}
          }while (i<=j);
     if (i<ld) qsort(i,ld);
     if (j>ls) qsort(ls,j);
     }
int main(){
    int i,j,k;
    freopen("secv.in","r",stdin);
    freopen("secv.out","w",stdout);
    scanf("%d",&n);
    for (i=1;i<=n;++i) {scanf("%d",&a[i]);
                        b[i]=a[i];}
    qsort(1,n);m=0;c[0]=-1;
    for (i=1;i<=n;++i) 
     if (b[i]!=c[m]) c[++m]=b[i];
    l=5005;
    for (i=1;i<=n-m+1;++i)
     if (a[i]==c[1]){
      k=2;
      for (j=i+1;j<=n && k<=m;++j)
       if (a[j]==c[k]) ++k;
      if (k==m+1){
       sw=1;         
       if (j-i<l) l=j-i;}
       }
    if (!sw) l=-1;
    printf("%d",l);
    return 0;
}