Pagini recente » Cod sursa (job #293970) | Cod sursa (job #2606816) | Cod sursa (job #2654735) | Cod sursa (job #1817075) | Cod sursa (job #780631)
Cod sursa(job #780631)
#include<iostream>
#include<fstream>
using namespace std;
const int maxx=5005;
int i,j,n,x[maxx],y[maxx],first[maxx],a[maxx],maxim,maxim2,poz,poz2,nr;
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];
poz=i;
}
}
if(maxim2!=nr)
printf("-1\n");
else
printf("%d\n",poz-first[poz]+1);
return 0;
}