社区讨论
T9625 10分求调(玄1关)
题目总版参与者 2已保存回复 2
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 2 条
- 当前快照
- 1 份
- 快照标识符
- @mhjo1boz
- 此快照首次捕获于
- 2025/11/04 05:42 4 个月前
- 此快照最后确认于
- 2025/11/04 05:42 4 个月前
CPP
#include<bits/stdc++.h>
using namespace std;
int a[3000005],s[3000005],n,st[3000005],r[3000005],l[3000005];
int main(){
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
s[i]=s[i-1]+a[i];
}
int p=-1;
st[++p]=n;
for(int i=n-1;i>=1;i--){
while(p>-1&&a[st[p]]>=a[i]){
p--;
}
if(p>-1)r[i]=st[p];
else r[i]=0;
st[++p]=i;
}
memset(st,0,sizeof(st));
p=-1;
st[++p]=n;
for(int i=2;i<=n;i++){
while(p>-1&&a[st[p]]>=a[i]){
p--;
}
if(p>-1)l[i]=st[p];
else l[i]=0;
st[++p]=i;
}
int mx=0;
for(int i=1;i<=n;i++){
mx=max(mx,(s[r[i]-1]-s[l[i]])*a[i]);
}
cout<<mx;
return 0;
}
回复
共 2 条回复,欢迎继续交流。
正在加载回复...