https://github.com/hustcc/canvas-nest.js

codevs1576

#include <stdio.h>

int OK(int c[],int num[],int i,int k){

int f=1,l=k;
while(f<=l){
int m=(f+l)/2;
if(num[c[m]]<num[i]) f=m+1;
else l=m-1;
}
return f;
}

int LIS(int num[],int n){

int c[5001],k=1;
c[0]=-1,c[1]=0;
for(int i=0;i<n;i++){
int dex=OK(c,num,i,k);
c[dex]=i;
if(dex>k) k=dex;
}
return k;
}

int main(){

int n,num[5001];
scanf("%d",&n);
for(int i=0;i<n;i++)
scanf("%d",&num[i]);
int ans=LIS(num,n);
printf("%d\n",ans);
return 0;
}

posted @ 2016-03-10 14:54  坏小孩不坏  阅读(122)  评论(0)    收藏  举报