给定一个长度为N的数列,求数值严格单调递增的子序列的长度最长是多少。
输入
第一行包含整数N。 第二行包含N个整数,表示完整序列。 1≤N≤100000,−10^9≤数列中的数≤10^9
输出
输出一个整数,表示最大长度。
样例
输入
复制
6 1 3 2 8 5 6
输出
复制
4
#include<bits/stdc++.h>
using namespace std;
int a,aa[100001],q;
int dp[100001];
int main()
{
cin>>a;
for(int i=1;i<=a;i++)
{
cin>>aa[i];
}
for(int i=1;i<=a;i++)
{
dp[i]=1;
for(int j=1;j<i;j++)
{
if(aa[i]>aa[j])dp[i]=max(dp[i],dp[j]+1);
}
q=max(q,dp[i]);
}
cout<<q;
return 0;
}