Cod sursa(job #571066)

Utilizator nicknameLare Nicu nickname Data 3 aprilie 2011 22:44:22
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.54 kb
#include <fstream>

using namespace std;

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

int BS(int *b, int len, int p){
	int m,l=0,r=len-1;
	while (l<=r){
		m=l+(r-l)/2;
		if(p>b[m])
			l=m+1;
		else
			r=m-1;
	}
	return l;
}

int main(){
	int *a,n,i,j,lmax=0,*l;
	fin>>n;
	a=new int[n];
	l=new int[n];
	for (i=0;i<n; ++i)
		fin>>a[i];
	for (i=0; i<n; ++i){
		j=BS(l,lmax,a[i]);
		if (j==lmax)
			l[lmax++]=a[i];
		}
	fout<<lmax<<"\n";
	for (i=0; i<lmax; ++i)
		fout<<l[i]<<" ";
	delete [] a;
	delete [] l;
	fin.close();
	fout.close();
	return 0;
}