Pagini recente » Cod sursa (job #1043483) | Cod sursa (job #1452581) | Cod sursa (job #1579556) | Cod sursa (job #553754) | Cod sursa (job #1955195)
#include <iostream>
#include <fstream>
using namespace std;
int n,a[100001],L[100001],p[100001],i,j,maxim,k,nr;
int main()
{freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(i=1; i<=n; i++)
scanf("%d", &a[i]);
L[n]=1;
p[n]=n;
for(i=n-1; i>=1; i--)
{
L[i]=1;
p[i]=i;
for(j=i+1; j<=n; j++)
{
if(L[j]>=L[i] && a[i]<a[j])
{
L[i]=L[j]+ 1;
p[i]=j;
}
}
}
for(i=1; i<=n; i++)
if(maxim<L[i])
{
maxim=L[i];
k=i;
}
printf("%d\n", maxim);
while(p[k]!=k)
{printf("%d ", a[k]);
k=p[k];}
printf("%d ", a[k]);
return 0;
}