Pagini recente » Cod sursa (job #2695145) | Cod sursa (job #1488931) | Cod sursa (job #821123) | Cod sursa (job #671199) | Cod sursa (job #702587)
Cod sursa(job #702587)
#include <cstdio>
#include <iostream>
#include <algorithm>
using namespace std;
#define maxN 100005
int N , x[maxN] , sol[maxN] , best[maxN] , tata[maxN];
int main ()
{
freopen ("scmax.in" , "r" , stdin);
freopen ("scmax.out" , "w" , stdout);
scanf ("%d" , &N);
int pozmax , sol_cost = 0 , poz;
for (int i = 1 ; i <= N ; ++i)
{
scanf ("%d" , &x[i]);
int lmax = 0;
for (int j = 1 ; j < i ; ++j)
if (best[j] > lmax && x[j] < x[i])
{
lmax = best[j];
poz = j;
}
best[i] = lmax + 1;
if (best[i] > sol_cost)
{
sol_cost = best[i];
tata[i] = poz;
pozmax = i;
}
}
int dim = 0;
for (int i = pozmax ; i ; i = tata[i])
sol[++dim] = x[i];
printf ("%d\n" , sol_cost);
for (int i = dim ; i >= 1 ; --i)
printf ("%d " , sol[i]);
return 0;
}