Pagini recente » Cod sursa (job #570161) | Cod sursa (job #2539223) | Cod sursa (job #2128572) | Cod sursa (job #537995) | Cod sursa (job #246231)
Cod sursa(job #246231)
#include<stdio.h>
int v[100005],n,x[100005],nr;
int find();
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",&v[i]);
printf("%d",lungime());
return 0;
}
int find(int val){
int p=1,u=nr,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(){
nr=0;
x[++nr]=v[1];
for(int i=2;i<=n;++i)
if(v[i]>x[nr])
x[++nr]=v[i];
else
x[find(v[i])]=v[i];
return nr;
}