Cod sursa(job #1971925)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 21 aprilie 2017 12:09:21
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 1.31 kb
// cel mai lung subsir crescator.cpp : Defines the entry point for the console application.
//

#include <iostream>
#include <fstream>
#include <vector>
#include <algorithm>
#include <map>

using namespace std;

ofstream out("scmax.out");
ifstream in("scmax.in");

const int MAX = 100000;
vector<int> el, sol,ant;
int v[MAX],N, counter = 0;

void text(vector<int>v) {
	for (int i = 0; i < v.size(); i++) {
		cout << v[i] << endl;
	}
}
int best(int i) {

	counter = 1;
	for (int j = i + 1; j < N; j++) {
        ant.push_back(v[j-1]);
		if (v[i] < v[j] && ant[j-1] != v[j]) {
			el.push_back(v[j]);
			counter++;
			if (j == N - 1) {
				sol.push_back(counter);
				return counter;
			}
		}
	}
	sol.push_back(counter);
	return counter;
}
void PD(int v[MAX]) {
	for (int i = 0; i < N; i++) {
		best(i);
	}

	int best_length = 0, poz = 0;
	for (int i = 0; i < N; i++) {

		if (sol[i] >= best_length) {
			best_length = sol[i];
			poz = i;
		}
	}
	out << best_length << endl << v[poz] << " ";
	sort(el.begin(), el.end());
	unique(el.begin(), el.end());
	for (int i = 0; i < best_length - 1; i++) {
		out << el[i] << " ";
	}
	return;
}
void citire() {
	in >> N;
	for (int i = 0; i < N; i++) {
        in>>v[i];
	}

}
int main() {


	citire();
	PD(v);


	return 0;

}