Cod sursa(job #177570)

Utilizator ciprianfFarcasanu Alexandru Ciprian ciprianf Data 13 aprilie 2008 12:11:26
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.48 kb
#include <stdio.h>
#define N 100005
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]+1){
			x[0]++;
			x[z]=a;
		}
	}
	printf("%d\n",x[0]);
	for(i=1;i<=x[0];i++)
		printf("%d ",x[i]);
}