Pagini recente » Cod sursa (job #2090535) | Cod sursa (job #1929550) | Cod sursa (job #684483) | Cod sursa (job #865393) | Cod sursa (job #246229)
Cod sursa(job #246229)
#include<stdio.h>
int a[100005],N,x[100005],lmax;
int find(int);
int lungime();
int main(){
freopen("scmax.in","r",stdin);
freopen("scmax.out","w",stdout);
scanf("%d",&N);
for(int i=1;i<=N;++i)
scanf("%d",&a[i]);
printf("%d",lungime());
return 0;
}
int find(int val){
int p=1,u=lmax,mij;
while(p<u){
mij=(p+u)/2;
if(val<=x[mij])
u=mij;
else
p=mij+1;
}
if(x[p]<val)
return p+1;
return p;
}
int lungime(){
lmax=0;
x[++lmax]=a[1];
for(int i=2;i<=N;++i)
if(a[i]>x[lmax])
x[++lmax]=a[i];
else
x[find(a[i])]=a[i];
return lmax;
}