Pagini recente » Cod sursa (job #2907247) | Cod sursa (job #2496257) | Cod sursa (job #1571005) | Cod sursa (job #1815858) | Cod sursa (job #299519)
Cod sursa(job #299519)
#include <cstdio>
#include <algorithm>
using namespace std;
#define Nmax 5011
int v[Nmax],best[Nmax],poz[Nmax],p,n,lmax;
void citire()
{
int i,j;
freopen("secv.in","r",stdin);
freopen("secv.out","w",stdout);
scanf("%d", &n);
for (i=1;i<=n;++i)
scanf("%d", &v[i]);
//sort(v+1,v+n+1);
}
void dinamica()
{
int i,j;
best[n]=1;
poz[n]=-1;
p=n;
lmax=0;
for (i=n-1;i>=1;--i)
{
best[i]=1;
poz[i]=-1;
for (j=i+1;j<=n;++j)
if (v[i]<v[j] && best[j]+1>best[i])
{
best[i]=best[j]+1;
if (best[i]>lmax)
lmax=best[i],p=i;
poz[i]=j;
}
}
}
void solve()
{
int i,j,nr;
i=p;
while(i!=-1)
{
nr=i;
i=poz[i];
}
nr=nr-p+1;
if (nr==1) printf("-1");
else printf("%d", nr);
}
int main()
{
citire();
dinamica();
solve();
return 0;
}