Pagini recente » Cod sursa (job #1627323) | Cod sursa (job #1398121) | Cod sursa (job #826118) | Cod sursa (job #600833) | Cod sursa (job #222977)
Cod sursa(job #222977)
#include<stdio.h>
int n,poz,min=6000;
long v[5001],sub[5001];
void read ()
{
FILE *f=fopen("secv.in","r");
fscanf(f,"%d",&n);
int i,j;
for (i=1;i<=n;++i)
{
fscanf(f,"%ld",&v[i]);
int ok=1;
for (j=1;j<=i-1&&ok;++j)
if (sub[j]==v[i])
ok=0;
if (ok)
sub[++poz]=v[i];
}
fclose(f);
}
void quicks (int s, int d)
{
int m=(s+d)/2,i=s,j=d,x;
x=sub[m];
while (i<=j)
{
while (sub[i]<x)
i++;
while (x<sub[j])
--j;
if (i<=j)
{
int aux=sub[i];
sub[i]=sub[j];
sub[j]=aux;
i++;
j--;
}
}
if (s<j)
quicks(s,j);
if (i<d)
quicks(i,d);
}
void solve ()
{
int i,poz2;
for (i=1;i<=n-poz+1;++i)
{
poz2=1;
if (v[i]==sub[poz2])
{
int j,ok=0,lg;
++poz2;
lg=1;
for (j=i+1;j<=n&&!ok;++j)
{
lg++;
if (v[j]==sub[poz2])
poz2++;
if (poz2==poz)
ok=1;
}
if (ok)
if (lg<min)
min=lg;
}
}
}
void write ()
{
FILE *f=fopen("secv.out","w");
if (min==6000)
fprintf(f,"-1");
else
fprintf(f,"%d",min+1);
fclose(f);
}
int main ()
{
read ();
quicks(1,poz);
solve ();
write ();
return 0;
}