#include <bits/stdc++.h>
using namespace std;
int a[50050],lis[50050];
int main()
{
int n,i,tmp;
while(cin>>n)
{
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
lis[0]=-(1<<30);
for(i=1;i<=n;i++)
lis[i]=1<<30;
for(i=1;i<=n;i++)
{
tmp=upper_bound(lis,lis+n+1,a[i])-lis;
lis[tmp]=min(a[i],lis[tmp]);
}
for(i=1;i<=n;i++)
{
if(lis[i]==(1<<30))
break;
}
cout<<i-1<<endl;
}
}
51nod 1134 最长递增子序列
最新推荐文章于 2020-11-16 23:00:45 发布