本地通过,提交WA
#include <bits/stdc++.h>
using namespace std;
int h[100010];
int solve(int l,int r){
int ans;
if(l==r) return h[l];
int m=(l+r)/2;
ans=max(solve(l,m),solve(m+1,r));
int lo=m,hi=m+1;int height=min(h[lo],h[hi]);
ans=max(ans,height*2);
while(l<lo||hi<r){
if(hi<r&&(lo==l||h[lo-1]<h[hi+1])) hi++,height=min(height,h[hi]);
else lo--,height=min(height,h[lo]);
}
ans=max(ans,height*(hi-lo+1));
return ans;
}
int main(){
while(1){
int n;cin>>n;
if(n==0) break;
for(int i=1;i<=n;i++) cin>>h[i];
cout<<solve(1,n)<<endl;
memset(h,0,sizeof(h));
}
return 0;
}