Cod sursa(job #461938)

Utilizator unknownliviuMaria Liviu Valentin unknownliviu Data 9 iunie 2010 11:38:20
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include<fstream>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int N=100010;
int v[N], lung[N],pred[N],n;

int read_solve()
{
	int i,j,m=-1,k,q=1;
	in>>n;
	for(i=1;i<=n;i++)
		in>>v[i];
	for(i=1;i<=n;i++)
	{	
		k=0;
		m=0;
		for(j=1;j<i;j++)
			if(v[j]<v[i] && lung[j]>m)
			{
				m=lung[j];
				k=j;
			}
		lung[i]=1+m;
		pred[i]=k;
	}
	for(i=1;i<=n;i++)
		if(lung[i]>lung[q])
			q=i;
	return q;
}
void afis(int poz)
{
	if(poz==0)
		return;
	afis(pred[poz]);
	out<<v[poz]<<" ";
}

int main()
{
	int p;
	p=read_solve();
	out<<lung[p]<<"\n";
	afis(p);
	return 0;
}