Pagini recente » Cod sursa (job #1801507) | Cod sursa (job #3290075) | Cod sursa (job #1601173) | Cod sursa (job #3240421) | Cod sursa (job #1260722)
#include <iostream>
#include <cstdio>
#define MAXN 100010
using namespace std;
int n;
int a[MAXN], best[MAXN], poz, maxi;
void dinamica()
{
for (int i = 1; i <= n; i++)
best[i] = 1;
for (int i = n-1; i > 0; i--)
for (int j = i; j <= n; j++)
if (a[i] < a[j] && best[j]+1 > best[i])
best[i] = best[j] + 1;
for (int i = 1; i <= n; i++)
if (best[i] > maxi)
{
maxi = best[i];
poz = i;
}
printf("%d\n", maxi);
}
void drum(int p)
{
cout << a[p] << " ";
for (int i = p+1; i <= n; i++)
if (best[p] == best[i]+1 && a[p] < a[i])
{
drum(i);
return;
}
}
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out", "w", stdout);
scanf("%d", &n);
for (int i = 1; i <= n; i++)
scanf("%d", &a[i]);
dinamica();
drum(poz);
return 0;
}