Pagini recente » Cod sursa (job #466092) | Cod sursa (job #1598911) | Cod sursa (job #1253248) | Cod sursa (job #1893420) | Cod sursa (job #1785926)
#include <cstdio>
using namespace std;
int n, a[100000], l[100000];
struct Lm
{
int indice, val;
}lmax;
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for(int i=0; i<n; i++)
scanf("%d", &a[i]);
l[n-1]=1;
for(int i=n-2; i>=0; i--)
{
int maxi=0;
for(int j=i+1; j<n; j++)
if(a[j]>a[i])
if(l[j]>maxi)
maxi=l[j];
l[i]=1+maxi;
if(l[i]>lmax.val)
{
lmax.indice=i;
lmax.val=l[i];
}
}
printf("%d\n", lmax.val);
printf("%d ", a[lmax.indice]);
int x=lmax.val;
int y=lmax.indice;
for(int i=y+1; i<n; i++)
{
if(l[i]==x-1)
{
if(a[i]>a[y])
{
printf("%d ", a[i]);
y=i;
x--;
}
}
}
return 0;
}