提交时间:2026-04-17 15:36:50

运行 ID: 87419

#include <bits/stdc++.h> using namespace std; const int M = 1e5 + 5, INF = 1e9; int n, a[M]; int f[M], g[M], len; int main() { int n; scanf ("%d", &n); for (int i = 1; i <= n; i++) scanf ("%d", &a[i]); for (int i = 1; i <= n; i++) { int pos = lower_bound(g + 1, g + len + 1, a[i]) - g; f[i] = pos; g[pos] = a[i]; len = max(len, pos); } cout << *max_element(f + 1, f + n + 1); return 0; }