Cod sursa(job #2078547)

Utilizator DimaTCDima Trubca DimaTC Data 29 noiembrie 2017 18:33:32
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.85 kb
#include<bits/stdc++.h>
#define NMAX 100100
#define IOS ios_base::sync_with_stdio(0); fin.tie(0);  


using namespace std;

ifstream fin("scmax.in");
ofstream fout("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]);
	fout<<a[x]<<" ";
}


int main() {
    fin>>n;
	IOS;
	for (int i=0; i<n; i++) {
		fin>>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;
	}
	fout<<L[p]<<endl;

	afisare(p);

	
	
	return 0;
}