Cod sursa(job #1971135)

Utilizator nicolaefilatNicolae Filat nicolaefilat Data 19 aprilie 2017 20:54:28
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.37 kb
// cel mai lung subsir crescator.cpp : Defines the entry point for the console application.
//

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

using namespace std;

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

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


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

            counter++;
		}

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

void PD(int v[MAX]){
    if(N == 0){
        return;
    }

	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]<<" ";
	text(el);
    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;

}