单调栈过了
建正方形
#include <bits/stdc++.h>
using namespace std;
const int N=100010;
int a[N],n,p,s[N],w[N];
long long ans;
int main(){
cin>>n;
for(int i=1;i<=n;i++)scanf("%d",&a[i]);
for(int i=1;i<=n+1;i++){
if(a[i]>s[p]){
s[++p]=a[i];w[p]=a[i];
}else {
long long wid=0;
while(s[p]>a[i]){
wid+=w[p];
ans=max(ans,(long long)wid*s[p]);
p--;
}s[++p]=a[i];w[p]=wid+a[i];
}
}
cout<<ans;
}