Pagini recente » Cod sursa (job #496919) | Cod sursa (job #2009662) | Cod sursa (job #151664) | Cod sursa (job #1073871) | Cod sursa (job #57868)
Cod sursa(job #57868)
#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]);
if (min==10000)printf("-1");
else
printf("%ld",min);
printf("\n");
return 0;
}