Cod sursa(job #472342)

Utilizator Cosmin1490Balan Radu Cosmin Cosmin1490 Data 23 iulie 2010 22:44:44
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.92 kb
#include <fstream>
#define NMAX 100001

std::ofstream fout("scmax.out");
	
int N,A[NMAX];
int L[NMAX];
int prec[NMAX];
int max,p;

void init()
{
	for(int i=1;i<=N;i++)
		{
			L[i]=1;
			prec[i]=-1;
		}
}

void citire()
{
	
	std::ifstream fin("scmax.in");
	fin>>N;
	
	
	for(int i = 1; i <= N ; i++ )
	{
		fin>>A[i];
	}
	fin.close();
}

void rec(int p)
{
	if(prec[p]!=-1)
	{	
		rec(prec[p]);
		fout<<A[p]<<" ";
	}
	else fout<<A[p]<<" ";
}

void afisare()
{
	fout<<max<<"\n";
	rec(p);
	
	fout.close();
}

void calculare()
{
	for( int i = 2; i <= N; i++)
		for( int j = 1; j < i ; j++)
			if ( A[j] < A[i])
			{
				if (1+L[j] > L[i])
					{
						L[i]=1+L[j];
						prec[i]=j;
						
						if(max < L[i]) 
						{
							max=L[i];
							p=i;
						}
					}
			}
	
	
}

int main(int argc, char *argv[])
{
	citire();
	
	init();
	
	calculare();
	
	afisare();
	
}