#include<bits/stdc++.h> usingnamespace std; #define LL long long #define ls rt<<1 #define rs rt<<1|1 #define eps 1e-9 #define mod 1000000007 #define MAXN 100005 #define MS 100005
int n,m; int p[MS], tot;
// p[i] 维护子序列长度为 i的最小值
voidsolve(){ cin >> n; for(int i=1;i<=n;i++){ int x; cin >> x; if(!tot || x > p[tot]) p[++tot] = x; else{ int pos = lower_bound(p+1,p+tot+1,x) - p; p[pos] = x; } } cout << tot << "\n"; }
intmain(){ ios::sync_with_stdio(false); int ce; ce = 1; // cin >> ce; // scanf("%d",&ce); while(ce--){ solve(); }
#include<bits/stdc++.h> usingnamespace std; #define LL long long #define ls rt<<1 #define rs rt<<1|1 #define eps 1e-9 #define mod 1000000007 #define MAXN 2e9 #define MS 100005
int n,m; int p[MS], tot;
// p[i] 维护子序列长度为 i的最小值
voidsolve(){ cin >> n; int ans = 0; for(int i=1;i<=n;i++) p[i] = MAXN; for(int i=1;i<=n;i++){ int x; cin >> x; int pos = lower_bound(p+1,p+n+1,x) - p; p[pos] = x; ans = max(ans,pos); } cout << ans << "\n"; }
intmain(){ ios::sync_with_stdio(false); int ce; ce = 1; // cin >> ce; // scanf("%d",&ce); while(ce--){ solve(); }