Cod sursa(job #484349)

Utilizator petroMilut Petronela petro Data 13 septembrie 2010 19:44:08
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.65 kb
#include<fstream>
#define M 100005
using namespace std;

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

int main()
{
	int v[M],l[M],poz[M];
	int n,k,i,j,m,p,pp;
	f>>n;
	p=0;
	
	for(k=1;k<=n;++k)
	{
		f>>v[k];
		i=1;
		j=p;
		pp=0;
		
		while(i<=j)
		{
			m=(i+j)/2;
			if(l[m]>v[k]) {pp=m;
						   j=m-1;}
			else if(l[m]<v[k]) i=m+1;
			     else {pp=m;
					   break;}
		}
		
		if(pp==0) {++p;
				   pp=p;}
		l[pp]=v[k];
		poz[k]=pp;
	}
	
	g<<p<<"\n";
	
	for(i=p;i>0;--i)
	{
		while(poz[n]!=i && n)
			--n;
		l[i]=v[n];
	}
	
	for(i=1;i<=p;++i)
		g<<l[i]<<" ";
	g<<"\n";
	
	f.close();
	g.close();
	return 0;
}