1.时间复杂度为O(nlogn)的最长递增子序列
#include<iostream>
using namespace std;
int stack[100005];
int main(){
int n,top;
top=0;
stack[0]=-1;
cin>>n;
for(int i = 0 ; i < n ; i++){
int a;
cin>>a;
if(stack[top]<a){
stack[++top]=a;
}
else{
int l=1,r=top;
int mid;
while(l<=r){
mid=(l+r)/2;
if(stack[mid]<a)l=mid+1;
else r=mid-1;
}
stack[l]=a;
}
}
cout<<top<<endl;
return 0;
}