Cod sursa(job #570976)

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

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

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

legnagyobb::legnagyobb(int *tomb,int m){
	elem=new 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 elozo=elem[0];
	int eleje=0;
	int vege=0;
	int elso=0;
	int utolso=0;
	int max=0;
	int akt=0;
	bool f=false;
	int i;
	for (i=1;i<n;i++){
		if (elem[i]>=elozo){
			elozo=elem[i];
			utolso=i;
			akt++;
			vege=i;
			f=false;
		}
		else if (akt>=max){
			max=akt;
			eleje=elso;
			vege=utolso;
			elso=i;
			utolso=i;
			akt=0;
			elozo=elem[i];
			f=true;
		}
		else {
			akt=0;
			elozo=elem[i];
			elso=i;
			utolso=i;
			f=true;
		}
	}
	if (akt>=max){
			max=akt;
			eleje=elso;
			vege=utolso;
			elso=i;
			utolso=i;
			akt=0;
			elozo=elem[i];
			f=true;
		}
	int* seged;
	max++;
	int j;
	seged=new int[max];
	int* seged2;
	seged2=new int[max];
	int l=0;
	for (int i=0;i<max;i++)
		seged[i]=elem[i+eleje];
	for (j=0;j<max;j++){
		if (seged[j]!=seged[j+1]){
			seged2[l]=seged[j];
			cout<<seged2[l];
			l++;}}
	seged2[l]=seged[j+1];
	legnagyobb vissza(seged2,l);
	delete[] seged;
	delete[] seged2;
	return vissza;
}

legnagyobb::~legnagyobb(){
//	delete [] elem;
}

int main(){
	legnagyobb v;
	v.vissza().beir();
	return 0;
}