Cod sursa(job #385727)

Utilizator tinkyAndrei Ilisei tinky Data 23 ianuarie 2010 12:56:36
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<fstream>
using namespace std;
int mx[100001],poz[100001];
long long v[100001];
int main()
{
	long long n,k,i,j,max,p;
	ifstream in("scmax.in");
	ofstream out("scmax.out");
	in>>n;
	for (i=1;i<=n;i++)
		in>>v[i];
	for (i=n;i>=1;i--)
	{
		p=0;
		max=0;
		for (k=i;k<=n;k++)
		{
			if (v[i]<v[k]&&max<mx[k])
			{
				max=mx[k];
				p=k;
			}
			mx[i]=max+1;
			poz[i]=p;
		}
	}
	max=0;
	p=0;
	for (i=1;i<=n;i++)
	{
		if (mx[i]>max)
		{
			max=mx[i];
			p=i;
		}
	}
	out<<mx[p]<<"\n\n";
	while (p!=0)
	{
		out<<v[p]<<" ";
		p=poz[p];
	}
	in.close();
	out.close();
	return 0;
}