Cod sursa(job #662361)

Utilizator whoasdas dasdas who Data 16 ianuarie 2012 16:38:42
Problema Subsir crescator maximal Scor 40
Compilator cpp Status done
Runda Arhiva educationala Marime 0.8 kb
#include <stdlib.h>
#include <stdio.h>
#include <fstream>
//#include <iostream>
using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");
int n, *a, *b, *p, i, j;

void afis(int j)
{
	if(j<0)
		return;
	afis(p[j]);
	fout<<a[j]<<" ";
}


int main()
{

	fin>>n;
	a = (int*)malloc(n*sizeof(int));
	b = (int*)malloc(n*sizeof(int));
	p = (int*)malloc(n*sizeof(int));

	for(i = 0; i<n; i++)
		fin>>a[i];
	
	b[0] = 1;
	p[0] = -1;

	for(i = 1; i < n; i++)
	{
		b[i] = 1;
		p[0] = -1;

		for(j = 0; j < i; j++)
			if(a[j] < a[i])
				if(b[j] + 1 > b[i])
				{
					b[i] = b[j] + 1;
					p[i] = j;
				}
	}
	
	j = 0;
	for(i = 1; i< n; i++)
		if(b[i] > b[j])
			j = i;

	fout<<b[j]<<endl;

	afis(j);	
	
	
	free(a);
	free(b);
	free(p);
	return 0;
}