问题2也是用Dilworth定理写的,不知道为什么tle,求调
#include <bits/stdc++.h>
#define max(a,b) ((a)>(b)?(a):(b))
using namespace std;
#define MAXN 100010
int n, a[MAXN], f[MAXN][2], ans, res;
signed main() {
cin.tie(0), cout.tie(0) -> sync_with_stdio(0);
while(cin >> a[++n]); --n;
for(int i = 1; i <= n; i++) {
f[i][0] = f[i][1] = 1;
for(int j = 1; j < i; j++)
if(a[i] <= a[j])
f[i][0] = max(f[j][0]+1, f[i][0]);
else f[i][1] = max(f[j][1]+1, f[i][1]);
ans = max(ans, f[i][0]), res = max(f[i][1], res);
}
cout << ans << '\n' << res;
return 0;
}