Cod sursa(job #372981)

Utilizator dexter_dexMutascu Adrian - Dragos dexter_dex Data 12 decembrie 2009 12:54:13
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include <stdio.h>
#define Nmax 100010

long  x[Nmax], L[Nmax], T[Nmax];
long i, j, p, n;
long  max, q;

FILE * g = fopen ("scmax.out", "w");

void ordine (int i){
 	if (i != 0){
		ordine (T[i]);
		fprintf (g, "%ld ", x[i]);
	}
}

int main () {
	
	FILE * f = fopen ("scmax.in", "r");
	
	fscanf (f, "%ld", &n);
	for (i = 1 ; i <= n ; i++)
		fscanf (f, "%ld", &x[i]);
	
	L[1] = 1;
	
	for (i = 2 ; i <= n ; i++){
		max = 0;
		p = 0;
		
		for (j = 1 ; j < i ; j++){
			if (max < L[j] && x[j] < x[i]){
				max = L[j];
				p = j;
			}
		}
		L[i] = max + 1;
		T[i] = p;
	}
	
	max = 0;
	
	for (i = 1 ; i <= n ; i++)
		
		if (max < L[i]) {
			max = L[i];
			q = i;
		}
		
		
	fprintf (g, "%ld\n", max);
	
	ordine (q);
	
	fclose(f);
	fclose(g);
	return 0;
}