Pagini recente » Cod sursa (job #1330818) | Cod sursa (job #192016) | Cod sursa (job #196348) | Cod sursa (job #2953555) | Cod sursa (job #72313)
Cod sursa(job #72313)
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 10000
int n,v[N],c[N],s[N],k=1;
void read()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
}
int exist(int x)
{
int i;
for(i=1;i<=k;i++)
if(c[i]==x)
return 1;
return 0;
}
int maxim(const void *a,const void *b)
{
return *(int*)a-*(int*)b;
}
void reconstruct()
{
int i;
c[k++]=v[1];
for(i=2;i<=n;i++)
if(!exist(v[i]))
c[k++]=v[i];
qsort(c,k,sizeof(c[0]),maxim);
k--;
}
int caut(int x,int poz)
{
int i,ok=1;
for(i=poz;i<=n&&ok;i++)
{
if(v[i]==x)
{
poz=i;
ok=0;
}
}
if(ok==1)
return -1;
return poz;
}
void solve()
{
int i,poz1,poz,min=N*N,nr=0,ok=1;
reconstruct();
//afis(c,k);
for(poz1=1;poz1<=n;poz1++)
if(v[poz1]==c[1])
{
nr=poz1;
poz=poz1;
ok=1;
for(i=2;i<=k&&ok;i++)
{
poz=caut(c[i],poz);
if(poz==-1)
ok=0;
}
if(ok)
{
nr=poz-nr+1;
if(nr<min)
min=nr;
}
}
if(min!=N*N)
printf("%d\n",min);
else
printf("%d\n",-1);
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
read();
solve();
return 0;
}