穿越隧道
dp + dp
#include <iostream>
#include <cstring>
#include <algorithm>
// #include <queue
using namespace std;
const int N = 1e3 + 10;
int f[N];
int g[N];
int a[N];
int n;
int main(){
while(cin >> a[n])n++;
int res = 0, ans = 0;
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);
}
}
res = max(res, f[i]);
for(int j = 0; j <i ; j++){
if(a[i] > a[j]){
g[i] = max(g[i],g[j] + 1);
}
}
ans = max(ans,g[i]);
}
cout << res << endl;
cout << ans << endl;
return 0;
}