Pagini recente » Cod sursa (job #2830113) | Cod sursa (job #929370) | Cod sursa (job #2909729) | Cod sursa (job #1690655) | Cod sursa (job #805467)
Cod sursa(job #805467)
#include<cstdio>
#define NMAX 1000
using namespace std;
int a[NMAX][NMAX], x[NMAX], n, sol[NMAX];
int main()
{
freopen("scmax.in", "r", stdin);
freopen("scmax.out","w", stdout);
scanf("%d", &n);
for(int i = 1; i <= n; ++i)
scanf("%d", &x[i]);
for(int i = 1; i <= n; ++i)
for(int j = i ; j <= n; ++j)
if(x[i] <= x[j] && i < j)
a[i][j] = a[i - 1][j - 1] + 1;
else
a[i][j] = (a[i - 1][j] > a[i][j - 1] ? a[i - 1][j] : a[i][j - 1]);
sol[0] = 1;
int ultim = 0;
for(int i = n, j = n; i > 0;)
{
if(x[i] < x[j])
{
sol[sol[0]] = x[i];
sol[0]++;
ultim = x[j];
i--;
j--;
}
else
if(a[i - 1][j] > a[i][j - 1])
i--;
else
j--;
}
int nr_max = a[n][n];
printf("%d\n", nr_max);
for(int i = nr_max - 1; i >= 0; --i)
printf("%d ", sol[i]);
printf("%d\n", ultim);
return 0;
}