Cod sursa(job #333499)

Utilizator gabipurcaruGabi Purcaru gabipurcaru Data 22 iulie 2009 23:05:33
Problema Subsir crescator maximal Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 0.78 kb
#include <fstream>
#include <algorithm>
#include <vector>

using namespace std;
ifstream cin("scmax.in");
ofstream cout("scmax.out");

long i,n,k,last,maxim;
vector<long> x,aux,a;
vector<long>::iterator it;
vector<long>::reverse_iterator it2;


int main()
{
	cin>>n;
	for(i=0; i<n; i++)
	{
		cin>>k;
		x.push_back(k);
		it = lower_bound(aux.begin(),aux.end(),k);
		a.push_back(it - aux.begin() +1);
		//cout<<a.back()<<' ';
		if(it == aux.end())
			aux.push_back(k);
		else
			*it = k;

		if(a.back() > a[maxim])
			maxim= a.size()-1;

	}
	aux.clear();
	aux.push_back(x[maxim]);
	for(i = maxim-1; a[maxim]>1; i--)
	{
		if(x[i] < x[maxim] && a[i] == a[maxim]-1)
			{
				aux.push_back(x[i]);
				maxim=i;
			}
	}

	for(it2 = aux.rbegin(); it2!=aux.rend(); it2++)
		cout<<*it2<<' ';

	return 0;
}