Cod sursa(job #501294)

Utilizator iulishorIulian Popescu iulishor Data 14 noiembrie 2010 18:24:28
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 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;
}