https://www.cometoj.com/contest/48/problem/B?problem_id=2278
二维dp
#include <bits/stdc++.h>
using namespace std;
const int maxn = 5e2+9;
int dp[maxn][maxn];
int a[maxn];
int main(){
int n;cin>>n;
for(int i=1;i<=n;i++)cin>>a[i];
for(int k=1;k<=n;k++){
for(int i=0;i<k;i++){
for(int j=0;j<k;j++){
if(a[i]<=a[k]){
dp[k][j]=max(dp[k][j],dp[i][j]+a[k]);
}
if(a[j]<=a[k]){
dp[i][k]=max(dp[i][k],dp[i][j]+a[k]);
}
}
}
}
int ans=0;
for(int i=0;i<=n;i++){
for(int j=0;j<=n;j++){
ans=max(ans,dp[i][j]);
}
}
cout<<ans<<endl;
return 0;
}