Cod sursa(job #691172)

Utilizator SilviussMezei Silviu Silviuss Data 26 februarie 2012 11:07:09
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.84 kb
#include <fstream>
#include <string.h>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

typedef struct result{
	int lung;
	char s[1000];
};

	int n;
	long v[100003];
	
result calcul_subsir(int minim, int pos){
	
	if(pos >= n){
		result a;
		a.lung = 0;
		strcpy(a.s, " ");
		return a;
	}
	result res1;

	result res2 = calcul_subsir(minim, pos + 1);
	
	if(v[pos] > minim){
		res1 = calcul_subsir(v[pos], pos + 1);
		res1.lung ++;
		char nr[1000];
	
		sprintf(nr, "%d", v[pos]);
	
		strcat(nr, " ");
		strcat(nr, res1.s);
		strcpy(res1.s, nr);
		
		if(res1.lung > res2.lung)
		return res1;
		
	}
	
	return res2;
}

int main(){

	fin >> n;

	for(int i = 0; i < n; i++){
		fin >> v[i];
	}
	
	result res = calcul_subsir(-1, 0);
	fout << res.lung << endl << res.s;
	
	
	return 0;
}