Cod sursa(job #491412)

Utilizator mihai995mihai995 mihai995 Data 11 octombrie 2010 11:06:37
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <fstream>
using namespace std;

int v[1<<17],a[1<<17],pred[1<<17],n,m;

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

void print(int x)
{
	if (!x)
		return;
	print(pred[x]);
	
	out<<v[x]<<" ";
}

void bs(int x)
{
	int i,step=1<<16;
	for (i=0;step;step>>=1)
		if (i+step<=m && v[a[i+step]]<v[x])
			i+=step;
	if (i==m)
	{
		a[++m]=x;
		pred[x]=a[i];
		return;
	}
	pred[x]=a[i];
	a[i+1]=x;
}

int main()
{
	int i;
	in>>n;
	for (i=1;i<=n;i++)
	{
		in>>v[i];
		bs(i);
	}
	out<<m<<"\n";
	print(a[m]);
	return 0;
}