Cod sursa(job #664650)

Utilizator TodeaDariustodea darius TodeaDarius Data 20 ianuarie 2012 16:16:27
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int i,n,a[100005],v[100005],l,mij,st,dr,p,lmax,nr;
int pozitie(int t)
{
	st=1;dr=nr;
	while(st<=dr)
	{
		mij=(st+dr)/2;
		if(t==v[mij])
		{
			return mij;
		}
		else
		if(t<v[mij])
		{
			dr=mij-1;
		}
		else
		{
			st=mij+1;
		}
	}
	return st;
}
int main()
{
	f>>n;nr=1;f>>a[1];v[1]=a[1];
	lmax=1;
	for(i=2;i<=n;i++)
	{
		f>>a[i];
		p=pozitie(a[i]);v[p]=a[i];
		if(p>nr)nr++;
		if(p>lmax)lmax=p;
	}
	g<<lmax<<'\n';
	for(i=1;i<=nr;i++)
	{
		g<<v[i]<<' ';
	}
	return 0;
}