问:为啥90分
代码:
#include<bits/stdc++.h>
#define N 100010
using namespace std;
long long n,top;
long long a[N],s[N],sum[N],len[N],ans;
int main(){
scanf("%lld",&n);
for(int i=1;i<=n;i++){
scanf("%lld",&a[i]);
sum[i]=sum[i-1]+a[i];
}
for(int i=1;i<=n;i++){
while(top&&a[s[top]]>=a[i]){
len[s[top]]=(sum[i-1]-sum[s[top]]);
top--;
}
s[++top]=i;
}
top=0;
s[0]=n+1;
for(int i=n;i>=1;i--){
while(top&&a[s[top]]>=a[i]){
len[s[top]]+=(sum[s[top]]-sum[i]);
top--;
}
s[++top]=i;
}
for(int i=1;i<=n;i++){
ans=max(ans,len[i]*a[i]);
}
printf("%lld",ans);
return 0;
}