Cod sursa(job #491411)

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

double v[1<<14],d[1<<14];
int a[1<<14],n,m;
bool prost[1<<14];

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

int bs(double x)
{
	int i,step=1<<13;
	for (i=0;step;step>>=1)
		if (i+step<=m && d[i+step]<=x)
			i+=step;
	if (i==m)
		m++;
	d[i+1]=x;
	return i+1;
}

int main()
{
	int i,r=-1,q;
	in>>n;
	for (i=1;i<=n;i++)
		in>>v[i];
	for (i=1;i<=n;i++)
	{
		a[i]=bs(v[i]);
		if (a[i]<2)
			prost[i]=true;
	}
	m=0;
	for (i=n;i;i--)
	{
		q=bs(v[i]);
		if (q<=1)
			prost[i]=true;
		a[i]+=q-1;
	}
	for (i=1;i<=n;i++)
		if (!prost[i])
			r=max(r,a[i]);
	out<<r<<"\n";
	return 0;
}