Pagini recente » Cod sursa (job #2011700) | Cod sursa (job #544053) | Cod sursa (job #2235546) | Cod sursa (job #1344612) | Cod sursa (job #72287)
Cod sursa(job #72287)
#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]);
}
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=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];
k--;
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 iinc(int x)
{
int i;
for(i=1;i<=k;i++)
if(x==c[i])
c[i]=0;
}
int gasit(int v[N],int poz,int &nr)
{
int i,j,ok=0;
for(i=poz;v[i]!=c[k]&&i<=n;i++)
iinc(v[i]);
j=i;
ok=1;
if(v[i]!=c[k])
ok=0;
c[k]=0;
for(i=1;i<=k;i++)
if(c[i])
ok=0;
if(ok)
{
nr=j-poz+1;
return 1;
}
return 0;
}
void solve()
{
int poz,min=N,nr=0,aux[N];
reconstruct();
//afis(c,k);
memcpy(aux,c,sizeof(c));
for(poz=1;poz<=n;poz++)
{
memcpy(c,aux,sizeof(aux));
if(v[poz]==c[1])
if(gasit(v,poz,nr)&&nr<min)
min=nr;
}
printf("%d\n",min);
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
read();
solve();
return 0;
}