Cod sursa(job #808810)

Utilizator andrei.baliciBalici Andrei andrei.balici Data 7 noiembrie 2012 13:33:42
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.91 kb
#include <fstream>
using namespace std;
ifstream intrare("scmax.in");
ofstream iesire("scmax.out");
int lgmax[100], urm[100], a[100];
int n;

void citire();
void pd();
void afisare();

int main()
	{
	citire();
	pd();
	afisare();
	return 0;
	}

void pd()
	{
	int i, j;
	//initializare
	lgmax[n]=1; urm[n]=-1;
	for (i=n-1;i>=1;i--)
		{
		//calculez lgmax[i]
		lgmax[i]=1; urm[i]=-1;
		for (j=i+1;j<=n;j++)
			if (a[i]<a[j]&&lgmax[i]<1+lgmax[j])
				{lgmax[i]=1+lgmax[j];urm[i]=j;}
		}
	}

void afisare()
	{
	int i, maxim, pozmax, aux;
	maxim=lgmax[1];pozmax=1;
	for (i=2;i<=n;i++)
		if (maxim<lgmax[i]){maxim=lgmax[i];pozmax=i;}
	iesire<<maxim<<'\n';
	iesire<<a[pozmax]<<' ';
	for (i=2;i<=n;i++)
		{
		if (urm[i]!=-1)
		iesire<<a[urm[i]]<<' ';
		aux=urm[i];i++;
		while (urm[i]==aux)i++;
		}
	}

void citire()
	{
	intrare>>n;
	int i;
	for (i=1;i<=n;i++)
		intrare>>a[i];
	}