Cod sursa(job #2078532)

Utilizator vasileefrosVasile Efros vasileefros Data 29 noiembrie 2017 18:20:01
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.79 kb
#include<fstream>
#define NMAX 100100

using namespace std;

ifstream cin("scmax.in");
ofstream cout("scmax.out");
	
unsigned int L[NMAX];
unsigned int a[NMAX];
unsigned int C[NMAX];
unsigned int n, mx, p, k;

void afisare(unsigned int x) {
	if (x == -1) {
		return;
	}
	afisare(C[x]);
	cout<<a[x]<<" ";
}


int main() {
	

	
	cin>>n;
	
	for (int i=0; i<n; i++) {
		cin>>a[i];
	}
	
	L[0] = 1; C[0] = -1;
	for (unsigned int i=1; i<n; i++) {
		L[i] = 1;
		p = i;
		
		for (unsigned int j=0; j<i; j++) {
			if (a[j]<a[i] && L[p] < L[j] +1) p=j;
		}
		
		if (p!=i) {
			L[i] = L[p] + 1;
			C[i] = p;

		} else {
			C[i] = -1;
		}
	}	
	
	p = 0;
		
	for (int i=1; i<n; i++) {
		if (L[i]>L[p]) p = i;
	}
	cout<<L[p]<<endl;

	afisare(p);

	
	
	return 0;
}