Files
python/TangDou/AcWing/LIS/1010_Dilworth.cpp

25 lines
646 B
C++
Raw Normal View History

2025-08-30 18:35:01 +08:00
#include <bits/stdc++.h>
using namespace std;
const int N = 1e5 + 10;
int n, a[N];
int f[N], fl;
int g[N], gl;
int main() {
while (cin >> a[n]) n++;
for (int i = 0; i < n; i++) {
f[i] = 1, g[i] = 1;
for (int j = 0; j < i; j++) {
if (a[i] <= a[j])
f[i] = max(f[i], f[j] + 1); // 最长的不上升子序列长度
else
g[i] = max(g[i], g[j] + 1); // 最长单调上升子序列的长度,等于,不上升子序列的覆盖数
}
fl = max(fl, f[i]), gl = max(gl, g[i]);
}
printf("%d\n%d\n", fl, gl);
return 0;
}