Cod sursa(job #971939)

Utilizator NectarPaval Ambrozie Nectar Data 10 iulie 2013 16:07:33
Problema Subsir crescator maximal Scor 30
Compilator cpp Status done
Runda Arhiva educationala Marime 0.71 kb
#include<fstream>
#include<iostream>
using namespace std;
int n,v[10000],poz[1000],sum[10000],l[10000],s;
int maxim,p;

void dinamica()
{
	l[n]=1;
	poz[n]=-1;
	maxim=1;
	for(int i=n-1;i>=1;i--)
	{
		l[i]=1;
		poz[i]=-1;
		for(int j=i;j<=n;j++)
		{
			if(v[i]<v[j] && l[i]<1+l[j])
			{
				l[i]=l[j]+1;
				poz[i]=j;
				if(l[i]>maxim)
				{
					maxim=l[i];
					p=i;
				}
			}
		}
	}
}

void construire()
{

		while(p!=-1)
		{
			s++;
			sum[s]=v[p];
			p=poz[p];
		}
}

int main()
{
	ifstream in("scmax.in");
	ofstream out("scmax.out");
	in>>n;
	for(int i=1;i<=n;i++)
		in>>v[i];
	dinamica();
	construire();
	out<<s<<"\n";
	for(int i=1;i<=s;i++)
		out<<sum[i]<<" ";
}