Cod sursa(job #1478309)

Utilizator dimavascan94VascanDumitru dimavascan94 Data 28 august 2015 13:25:55
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <iostream>
#include <algorithm>
int i, j, size = 0, length[100005] = { 0 }, in[100005], best, trace[100005] = { -1 }, end,sol[100005];

int main()
{
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	scanf("%d", &size);

	for (i = 0; i < size; i++)	scanf("%d", &in[i]);

	length[0] = 1;
	for (int i = 1; i < size;i++)
	{
		best = 1;
		for (j = i - 1; j >= 0; --j)	if (in[j]<in[i] && length[j] + 1>best)	best = length[j] + 1,trace[i] = j;
		length[i] = best;
	}

	best = 0;
	for (int i = 0; i < size; i++) if (length[i]>best) best = length[i], end = i;

	int aux = best;
	while (aux>0)	sol[--aux] = in[end], end = trace[end];

	printf("%d\n", best);
	for (i = 0; i < best; ++i)	printf("%d ", sol[i]);	
}