Cod sursa(job #387386)

Utilizator nandoLicker Nandor nando Data 27 ianuarie 2010 15:42:47
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.67 kb
#include <fstream>

#define MAX 100000

using namespace std;

int vec[MAX],vP[MAX],v[MAX],res[MAX];

int main(){
	fstream fin("scmax.in",ios::in);
	fstream fout("scmax.out",ios::out);
	
	int n,imax=0,k,p=0;
	fin>>n;
	for(int i=0;i<n;i++){
		fin>>vec[i];
	}
	vP[0]=-1;
	v[0]=1;
	for(int i=1;i<n;i++){
		vP[i]=-1;
		v[i]=1;
		for(int j=0;j<i;j++){
			if(vec[j]<vec[i]&&v[j]+1>v[i]){
				v[i]=v[j]+1;
				vP[i]=j;  
			}
		}
		if(v[i]>v[imax]){
			imax=i;
		}
	}
	k=imax;
	while(vP[k]+1){
		res[p++]=vec[k];
		k=vP[k];
	}
	res[p++]=vec[k];
	fout<<v[imax]<<endl;
	for(int i=p-1;i>=0;i--){
		fout<<res[i]<<" ";
	}
	fin.close();
	fout.close();
}