Cod sursa(job #194806)

Utilizator silvia_the_bestSilvia Pripoae silvia_the_best Data 14 iunie 2008 12:27:25
Problema Subsir crescator maximal Scor 50
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
const int N=100010;
int n,v[N],x[N],nr;
void read(){
	int i;
	freopen("scmax.in","r",stdin);
	scanf("%d",&n);
	for (i=1;i<=n;++i)
		scanf("%d",&v[i]);
}
int caut(int y){
	int p=1,u=nr,m;
	while (p!=u){
		m=(p+u)/2;
		if (y<=x[m])
			u=m;
		else
			p=m+1;
	}
	if (x[p]<y)
		++p;
	return p;
}
void rezolva(){
	int p;
	x[++nr]=v[1];
	for(int i=2;i<=n;++i){
		p=caut(v[i]);
		if(p==nr+1)
			++nr;
		x[p]=v[i];
	}
	freopen("scmax.out","w",stdout);
	printf("%d\n",nr);
}

int main(){
	read();
	rezolva();
	//write();
}