intmain() { cin >> n; for (int i = 1; i <= n; i ++ ) cin >> w[i]; for (int i = 1; i <= n; i ++ ) { f[i] = 1; for (int j = 1; j < i; j ++ ) if (w[i] > w[j]) f[i] = max(f[j] + 1, f[i]); } int res = -1; for (int i = 1;i <= n; i ++ ) res = max(res, f[i]); cout << res << endl; return0; }
intmain() { cin >> n; for (int i = 0; i < n; i ++ ) cin >> a[i]; int len = 0; q[0] = -2e9; for (int i = 0; i < n; i ++ ) { int l = 0, r = len; while (l < r) { int mid = l + r + 1 >> 1; if (q[mid] < a[i]) l = mid; else r = mid - 1; } len = max(len, r + 1); q[r + 1] = a[i]; } cout << len << endl; return0; }