Cod sursa(job #1644524)

Utilizator AvramusAvram Andrei Marius Avramus Data 9 martie 2016 23:50:20
Problema Subsir crescator maximal Scor 45
Compilator cpp Status done
Runda Arhiva educationala Marime 0.81 kb
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

int n, v[10005], p[10005],pre[10005];

int max(int a,int  b) {
	if (a > b) return a;
	else return b;
}

void det_subsir() {
	for (int i = 0; i < n; i++)
		p[i] = 1;
	for (int i = 1; i < n; i++) {
		pre[i] = i;
		for (int j = 0; j < i; j++) {
			if (v[j] < v[i]) {
				p[i] = max(p[i], p[j] + 1);
				pre[i] = j;
			}
		}
	}
}

void print(int poz,int maxim) {
	if (maxim == 0)
		return;
	print(pre[poz], maxim - 1);
	fout << v[poz] << " ";
}

int main() {
	int poz, maxim = 0;
	fin >> n;
	for (int i = 0; i < n; i++)
		fin >> v[i];
	det_subsir();
	for (int i = 0; i < n; i++)
		if (p[i]>maxim)
		{
			maxim = p[i];
			poz = i;
		}
	fout << maxim << endl;
	print(poz,maxim);
	return 0;
}