Pagini recente » Cod sursa (job #2127458) | Cod sursa (job #708409) | Cod sursa (job #142017) | Cod sursa (job #328133) | Cod sursa (job #182250)
Cod sursa(job #182250)
#include<fstream.h>
ifstream f("secv.in");
ofstream g("secv.out");
int a[5001],pr[5001],n,l,j,x,ok,i,min=0,prs[5001],cont,k;
int divide(int p,int q)
{
int st=p,dr=q,x=pr[p];
while(st<dr)
{
while(st<dr && pr[dr]>=x) dr--;
pr[st]=pr[dr];
while(st<dr && pr[st]<=x) st++;
pr[dr]=pr[st];
}
pr[st]=x;
return st;
}
void qsort(int p,int q)
{
int m=divide(p,q);
if(m-1>p) qsort(p,m-1);
if(m+1<q) qsort(m+1,q);
}
int main()
{
f>>x;
l=0;
for(i=1;i<=x;i++)
{ok=0;
f>>a[i];
for(j=1;j<=l;j++)
if(a[i]==pr[j])
{ ok=1; break;}
if(ok==0)
pr[++l]=a[i];
}
qsort(1,l);
min=x;
for(i=1;i<=x;i++)
{
for(j=1;j<=l;j++)
{ prs[j]=0;cont=l;}
if(a[i]==pr[1])
{
k=i+1;
j=2;
prs[1]=1;
cont--;
while(cont>0&&k<=x)
{
if(pr[j]==a[k])
{ if(prs[j]==0)
{prs[j++]=1;cont--;}}
else k++;
}
if(k-i-1<min && cont==0) min=k-i;
}
}
g<<min;
return 0;
}