Pagini recente » Cod sursa (job #1615006) | Cod sursa (job #2311632) | Cod sursa (job #649560) | Cod sursa (job #1896320) | Cod sursa (job #1785915)
#include <iostream>
#include <cstdio>
using namespace std;
#define NMAX 100000
int N,a[NMAX],l[NMAX],lmax;
void citire()
{
scanf("%d ",&N);
for(int i=0;i<N;i++)
scanf("%d ",&a[i]);
}
void dp()
{
l[N-1]=1;
for(int i=N-2;i>=0;i--)
{
int maxim=0;
for(int j=N-1;j>i;j--)
{
if(a[j]>a[i] && l[j]>maxim)
maxim=l[j];
}
l[i]=1+maxim;
if(l[i]>lmax)
lmax=l[i];
}
printf("%d\n",lmax);
int i;
for(i=0;l[i]!=lmax;i++);
for(;i<N;)
{
printf("%d ",a[i]);
lmax--;
for(i++;l[i]!=lmax;i++);
}
}
int main()
{
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
citire();
dp();
return 0;
}