#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 10;
#define inf 0x3f3f3f3f
int N, ans;
int dp[maxn], a[maxn], num[maxn];
int main() {
scanf("%d", &N);
for(int i = 0; i < N; i ++)
scanf("%d", &a[i]);
fill(dp, dp + N, inf);
ans = -1;
for(int i = 0; i < N; i ++) {
int pos = lower_bound(dp, dp + N, a[i]) - dp;
num[i] = pos + 1;
ans = max(ans , num[i]);
dp[pos] = a[i];
}
printf("%d\n", ans);
return 0;
}
转载于:https://www.cnblogs.com/zlrrrr/p/11538021.html
相关资源:JAVA上百实例源码以及开源项目