* 输入
8
186 186 150 200 160 130 197 220
- 输出
4
代码
#include<iostream>
#include<algorithm>
using namespace std;
const int N = 1010;
int n,w[N];
int dp1[N],dp2[N];
int main(){
cin >> n;
for(int i=1;i<=n;++i) scanf("%d",&w[i]);
//上山
for(int i=1;i<=n;++i)
{
dp1[i] = 1;
for(int j=1;j<i;++j)
if(w[i] > w[j])
dp1[i] = max(dp1[i],dp1[j] + 1);
}
//下山
for(int i=n;i>0;--i)
{
dp2[i] = 1;
for(int j=n;j>i;--j)
if(w[i] > w[j])
dp2[i] = max(dp2[i],dp2[j] + 1);
}
int ans = 0;
for(int i=1;i<=n;++i) ans = max(ans,dp1[i] + dp2[i] - 1);
cout << ans << endl;
return 0;
}