Cod sursa(job #552900)

Utilizator skullLepadat Mihai-Alexandru skull Data 13 martie 2011 10:01:58
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include <stdio.h>
using namespace std;
#define nmax 100005

int SOL[nmax], poz[nmax], V[nmax];
int N;

void citire ()
{
	int i;
	scanf("%d", &N);
	for (i = 1; i <= N; ++i) scanf("%d", &V[i]);
}

void afisare (int x)
{
	if ( x ) afisare(poz[x]);
		else return;
	printf("%d ", V[x]);
}

void solve ()
{
	int i, j, ind, maxim = 0;
	SOL[1] = 1;
	for (i = 2; i <= N; ++i)
	{
		for (j = 0; j < i; ++j)
			if (V[j] < V[i] && SOL[j] >= SOL[i]) { SOL[i] = SOL[j] + 1; poz[i] = j; }
		if (SOL[i] > maxim) { maxim = SOL[i]; ind = i; }
	}
	printf("%d\n", SOL[ind]);
	afisare (ind);
}

int main ()
{
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	citire ();
	solve ();
	return 0;
}