Cod sursa(job #411571)

Utilizator laurionLaurentiu Ion laurion Data 4 martie 2010 23:19:42
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.72 kb
#include<iostream>
#include<fstream>

using namespace std;

int main()
{
	ifstream fin("scmax.in");
	ofstream fout("scmax.out");
	int i, j,l[100000],poz[100000],a[100000],n;
	fin>>n;
	for(i=0;i<n;i++) fin>>a[i];
	l[n]=1; poz[n]=-1;
	for (i=n-1; i>0; i--)
    for (l[i]=1, poz[i]=-1, j=i+1; j<=n; j++)
        if (a[i] <= a[j] && l[i]<1+l[j])
		{
			l[i]=1+l[j]; 
			poz[i]=j;
		}

	//determin maximul din vectorul l
	int max=l[1], pozmax=1;
	
	for (int i=2; i<=n; i++)
    if (max<l[i]) {max=l[i]; pozmax=i;}
	fout<<"Lungimea celui mai lung subsir crescator: " <<max;
	fout<<"\nCel mai lung subsir:\n";
	for (i=pozmax; i!=-1; i=poz[i])
		fout<<a[i]<<' ';

	
	fin.close();
	fout.close();
	return 0;
}