Cod sursa(job #691106)

Utilizator SilviussMezei Silviu Silviuss Data 26 februarie 2012 10:49:48
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.94 kb
#include <fstream>
#include<iostream>
#include <string.h>

using namespace std;

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

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

result calcul_subsir(long *v, int n, int minim, int pos){
	
	cout << minim << " " << pos << endl;
	
	if(pos >= n){
		result a;
		a.lung = 0;
		strcpy(a.s, " ");
		return a;
	}
	result res1;

	result res2 = calcul_subsir(v, n, minim, pos + 1);
	
	if(v[pos] > minim){
		res1 = calcul_subsir(v, n, v[pos], pos + 1);
		res1.lung ++;
		char nr[100];
	
		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(){

	int n;
	long *v;

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