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