Cod sursa(job #568346)

Utilizator loginLogin Iustin Anca login Data 31 martie 2011 08:59:16
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.61 kb
# include <fstream>
# include <iostream>
# define DIM 100003
using namespace std;
int n, v[DIM], l[DIM], lmax, p;

void f (int st, int dr, int x)
{
	if (st==dr)
	{
		if (l[st]<x)
			p=st;
		return;
	}
	int mij=(st+dr)/2;
	if (l[mij]<x)
	{
		p=mij;
		f(mij+1, dr, x);
	}
	else
		f(st, mij, x);
}

int main ()
{
	ifstream fin ("scmax.in");
	ofstream fout ("scmax.out");
	fin>>n;
	for(int i=1;i<=n;++i)
		fin>>v[i];
	for(int i=1;i<=n;++i)
	{
		f(0, lmax, v[i]);
		if (l[p+1]==0)l[++lmax]=v[i];
		else l[p+1]=v[i];
	}
	fout<<lmax<<"\n";
	for(int i=1;i<=lmax;++i)
	{
		while(l[i]<=l[i-1]);
		fout<<l[i]<<" ";
	}
	return 0;
}