Pagini recente » Cod sursa (job #2145832) | Cod sursa (job #1118163) | Cod sursa (job #1711362) | Cod sursa (job #1588178) | Cod sursa (job #72281)
Cod sursa(job #72281)
#include<stdio.h>
#include<stdlib.h>
#define N 5001
int n,v[N],c[N],s[N],k;
void read()
{
int i;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
}
void afis(int v[N],int n)
{
int i;
for(i=1;i<=n;i++)
printf("%d ",v[i]);
printf("\n");
}
int exist(int x)
{
int i;
for(i=0;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);
}
void init(int s[N])
{
int i;
for(i=1;i<=k;i++)
s[i]=0;
}
int all()
{
int i;
for(i=1;i<=k;i++)
if(s[i]==0)
return 0;
return 1;
}
void solve()
{
int i,poz,min=N;
reconstruct();
//afis(c,k);
for(poz=1;poz<=n;poz++)
if(v[poz]==c[0])
{
init(s);
for(i=poz;i<=n;i++)
{
s[v[i]]=1;
if(all()&&i-poz+1<min)
min=i-poz+1;
}
}
printf("%d\n",min);
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
read();
solve();
return 0;
}