Pagini recente » Cod sursa (job #485603) | Cod sursa (job #871316) | Cod sursa (job #1205272) | Cod sursa (job #190574) | Cod sursa (job #780634)
Cod sursa(job #780634)
#include<iostream>
#include<fstream>
#include<cstdlib>
using namespace std;
const int maxx=5005;
int i,j,n,x[maxx],y[maxx],first[maxx],a[maxx],maxim,maxim2,poz,poz2,nr,minim;
int cmp(const void *p,const void *q)
{
return *(int *)p-*(int *)q;
}
int main()
{
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)
{
scanf("%d",&x[i]);
a[i]=x[i];
}
qsort(a+1,n,4,cmp);
i=2;
nr=1;
while(i<=n)
{
if(a[i]!=a[i-1])
nr++;
i++;
}
y[1]=1;
first[1]=1;
for(i=2;i<=n;i++)
{
maxim=0;
for(j=1;j<=i-1;j++)
if(x[j]<x[i])
if(maxim<y[j])
{
maxim=y[j];
poz2=j;
}
y[i]=maxim+1;
if(maxim==0)
first[i]=i;
else
first[i]=first[poz2];
if(maxim2<y[i])
maxim2=y[i];
}
if(maxim2!=nr)
printf("-1\n");
else
{
minim=maxx;
for(i=1;i<=n;i++)
if(y[i]==nr)
if(minim>i-first[i]+1)
minim=i-first[i]+1;
printf("%d\n",minim);
}
return 0;
}