Cod sursa(job #497462)

Utilizator uhraurhuavasile paul emilian uhraurhua Data 2 noiembrie 2010 16:30:44
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.75 kb
#include<iostream>
#include<fstream>
#include <vector>
using namespace std;
ifstream in("scmax.in");
ofstream out("scmax.out");
const int MAX_N = 10005;

int n, a[MAX_N], c[MAX_N],max2=0,k, p[MAX_N];

vector <int> vect;

int main(){
	in>>n;
	for(int i=1;i<=n;i++)
		in>>a[i];
	in.close();
	for(int i=1;i<=n;i++) {
		c[i] = 1;
		for(int j=i-1;j>=1;j--)
			if(a[i] > a[j]) 
				if (c[i] < c[j] + 1) {
					c[i] = c[j] + 1;
					p[i] = j;
				}
		
	}
	for(int i=1;i<=n;i++)
		if(c[i]>max2){
			max2=c[i];
			k=i;
		}
	while (c[k] != 1) {
		vect.push_back(a[k]);
		k = p[k];
	}
	vect.push_back(a[k]);
	out<<vect.size()<<endl;
	for (int i = (int)vect.size() - 1; i >= 0; -- i)
		out << vect[i] << " ";
	out.close();
	return 0;
}