Cod sursa(job #177549)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 13 aprilie 2008 11:51:49
Problema Subsir crescator maximal Scor 65
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>
#define N 100001
int x[N],n;
int caut(int z){
	int st=1,dr=x[0],m;
	while(st<=dr){
		m=(st+dr)/2;
		if(x[m]==z) return m;
		if(x[m]>z) dr=m-1;
		else st=m+1;
	}
	return st;
}
int main(){
	int i,z,a;
	freopen("scmax.in","r",stdin);
	freopen("scmax.out","w",stdout);
	scanf("%d",&n);
	for(i=1;i<=n;i++){
		scanf("%d",&a);
		z=caut(a);
		if(z>x[0]) x[0]++;
		x[z]=a;
	}
	printf("%d\n",x[0]);
	for(i=1;i<=x[0];i++)
		printf("%d ",x[i]);
}