/* dp[i][j]表示以i结尾,前段最大值j */ #include<bits/stdc++.h> using namespace std; #define N 200005 #define B 30 int n,a[N],dp[N][100]; int main(){ cin>>n; for(int i=1;i<=n;i++)scanf("%d",&a[i]); memset(dp,-0x3f,sizeof dp); dp[1][a[1]+B]=0; int ans=0; for(int i=2;i<=n;i++){ dp[i][a[i]+B]=0; for(int j=0;j<=60;j++)if(dp[i-1][j]!=-0x3f3f3f3f){ if(j<=a[i]+B)//删a[i] dp[i][a[i]+B]=max(dp[i][a[i]+B],dp[i-1][j]+j-B); else//删j dp[i][j]=max(dp[i][j],dp[i-1][j]+a[i]); } } for(int i=1;i<=n;i++) for(int j=0;j<=60;j++) ans=max(ans,dp[i][j]); cout<<ans<<' '; }