Cod sursa(job #1644561)

Utilizator AvramusAvram Andrei Marius Avramus Data 10 martie 2016 00:07:28
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");

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


void det_subsir() {
	for (int i = 0; i < n; i++)
		p[i] = 1;
	for (int i = 1; i < n; i++) {
		for (int j = 0; j < i; j++) {
			if (v[j] < v[i]) {
				if (p[j] + 1>p[i]) {
					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;
}