Cod sursa(job #705234)

Utilizator seviyorAgape Alexandru seviyor Data 3 martie 2012 18:54:06
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.69 kb
#include <stdio.h>

#define NMAX 100001

int v[NMAX+1];
int n;
int p[NMAX+1];
int sol[NMAX+1];

void print_sol(int i) {
	if (i) {
		print_sol(p[i]);
		printf("%d ", v[i]);	
	}	
}


int solve_n2() {
	int i, j, max=0, imax;
	sol[1] = 1;
	for (i=2; i<=n;i++) {
		//sol[i] = 1;
		for (j=1; j<i; j++) {
			if (v[j]<v[i] && sol[j]>sol[i]) {sol[i] = sol[j]; p[i]=j;}
		}
		sol[i]++;
		if (sol[i]>max) {
			max = sol[i];
			imax = i;
		}
	}
	
	printf("%d\n", max);
	print_sol(imax);
}

int main()
{
	freopen("scmax.in", "r", stdin);
	freopen("scmax.out", "w", stdout);
	int i;
	
	scanf("%d", &n);
	for (i=1;i<=n;i++) scanf("%d", v+i);
	
	solve_n2();
	
	return 0;	
}