Cod sursa(job #967819)

Utilizator mircea.dobreanuMircea Dobreanu mircea.dobreanu Data 28 iunie 2013 16:03:16
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include<fstream>
using namespace std;
const int MAXN=100010;
int n,lgmax,pozstart;
int v[MAXN],lg[MAXN],poz[MAXN];
void citire()
{
	ifstream fin("scmax.in");
	fin>>n;
	for (int i=1;i<=n;++i)
		fin>>v[i];
	fin.close();
}
void rezolvare()
{
	int i,j;
	for (i=n,lg[i]=1,poz[i]=-1;i>0;--i)
	{
		for (j=i+1;j<=n;++j)
		{
			if (v[i]<v[j] && lg[i]<1+lg[j])
			{
				lg[i]=1+lg[j];
				poz[i]=j;
			}
			if (lg[i]>lgmax)
			{
				lgmax=lg[i];
				pozstart=i;
			}
		}
	}
}
void afisare()
{
	ofstream fout("scmax.out");
	fout<<lgmax<<'\n';
	int i=pozstart;
	while (i<=n && i!=-1)
	{
		fout<<v[i]<<' ';
		i=poz[i];
	}
	fout<<'\n';
	fout.close();
}
int main()
{
	citire();
	rezolvare();
	afisare();
	return 0;
}