Cod sursa(job #571051)

Utilizator deszhtopSzabo Hunor deszhtop Data 3 aprilie 2011 22:04:02
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.17 kb
#include <iostream>
#include <fstream>
using namespace std;

class legnagyobb{
	int elem[10000];
	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=1;i<=n;i++){
		be>>p;
		elem[i]=p;}
	be.close();
}

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

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

legnagyobb legnagyobb::vissza(){
	int vissza2[10000];
	int l[10000];
	int hely[10000];
	int i,j;
	l[n]=1;
	hely[n]=-1;
	int max=1,maxmax;
	for(i=n-1;i>=1;i--)
	 {
		l[i]=1;
		hely[i]=-1;
		for(j=i+1;j<=n;j++)
			if((elem[i]<elem[j])&&(l[i]<l[j]+1))
			{
				l[i]=l[j]+1;
				hely[i]=j;
				if(l[i]>max)
				{
					max=l[i];//maximum elem szam
					maxmax=i;
				}
			}
	}
	int cc=1;
	for(i=maxmax;i!=-1;i=hely[i]){
	 vissza2[cc]=elem[i];
	 cc++;
		}
	legnagyobb vissza(vissza2,max);
	return vissza;
}
int main(){
	legnagyobb v;
	v.vissza().beir();
	return 0;
}