Cod sursa(job #571017)

Utilizator deszhtopSzabo Hunor deszhtop Data 3 aprilie 2011 21:16:26
Problema Subsir crescator maximal Scor 20
Compilator cpp Status done
Runda Arhiva educationala Marime 1.52 kb
#include <iostream>
#include <fstream>
using namespace std;

class legnagyobb{
	int elem[10005];
	int n;
public:
	legnagyobb();
	void beir();
	legnagyobb vissza();
	legnagyobb(int *tomb,int m);
};

legnagyobb::legnagyobb(){
	ifstream be ("scmax.in" , ifstream::in );
	be>>n;
	int p;
	for (int i=0;i<n;i++){
		be>>p;
		elem[i]=p;}
	be.close();
}

legnagyobb::legnagyobb(int *tomb,int m){
	n=m;
	for (int i=0;i<n;i++)
		elem[i]=tomb[i];
}

void legnagyobb::beir(){
	ofstream ki("scmax.out");
	ki<<n<<"\n";
	int j;
	for (j=0;j<n;j++)
		ki<<elem[j]<<" ";
	ki.close();
}

legnagyobb legnagyobb::vissza(){
	int l=0;
	int seged[10000];
	int j=0;
	for (j=0;j<n;j++){
		if (elem[j]!=elem[j+1]){
			seged[l]=elem[j];
			l++;}
	}
	seged[l]=elem[j+1];
	n=l;
	int elozo=seged[0];
	int eleje=0;
	int vege=0;
	int elso=0;
	int utolso=0;
	int max=0;
	int akt=0;
	int i;
	for (i=1;i<n;i++){
		if (seged[i]>elozo){
			elozo=seged[i];
			utolso=i;
			akt++;
			vege=i;
		}
		else if (akt>max){
			max=akt;
			eleje=elso;
			vege=utolso;
			elso=i;
			utolso=i;
			akt=0;
			elozo=seged[i];
		}
		else {
			akt=0;
			elozo=seged[i];
			elso=i;
			utolso=i;
		}
	}
	if (akt>max){
			max=akt;
			eleje=elso;
			vege=utolso;
			elso=i;
			utolso=i;
			akt=0;
			elozo=seged[i];
		}
	max++;
	int seged2[10005];
	for (int i=0;i<max;i++)
		seged2[i]=seged[i+eleje];
	legnagyobb vissza(seged2,max);
	return vissza;
}
int main(){
	legnagyobb v;
	v.vissza().beir();
	return 0;
}