Cod sursa(job #812802)

Utilizator RobertSSamoilescu Robert RobertS Data 14 noiembrie 2012 15:23:10
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include<iostream>
#include<fstream>
using namespace std;
#define MAX_N 1500
#define maxim(a,b) ((a>b)? a:b)
int N;// lungimile celor doua siruri
int a[MAX_N];
int lungime[MAX_N];
int poz_max, maxim;

ofstream g("scmax.out");
void read(){
	ifstream f("scmax.in");
	f >> N;
	for(int i=1; i<=N; i++){
		f >> a[i];
	}
}


void det_maxim(){
	lungime[N] = 1;
	for(int i=N-1; i>=1; i--){
		for(int j=i+1; j<=N; j++){
			if(a[i] < a[j])
				if(lungime[i]< lungime[j])
					lungime[i] = lungime[j]+1;
		}
		
		if(lungime[i] == 0)
			lungime[i] ++;
		
		if(maxim < lungime[i]){
			maxim  = lungime[i];
			poz_max = i;
		}
	}
}


void afis(int poz, int max){
	
	if(poz <=N && max!=0 ){
		if(lungime[poz] == max){
			g << a[poz]<< " ";
			afis(poz+1, max-1);
		}else afis(poz+1, max);
	}
	
	
}


int main(){
	
	read();
	det_maxim();
	
	g <<  maxim <<'\n';
	afis(poz_max, maxim);
	
	


	return 0;
}