Subtask#1WA求条
查看原帖
Subtask#1WA求条
1454243
zc0508楼主2025/1/16 17:33
#include<bits/stdc++.h>
#define int long long
const int N=100010;
int n,st[N],a[N],l[N],r[N],s[N],top,ans;
using namespace std;
signed main()
{
	cin>>n;
	for(int i=1;i<=n;i++)
	{
		cin>>a[i];
		s[i]=s[i-1]+a[i];
	}
	for(int i=1;i<=n;i++)
	{
		while(top&&a[st[top]]>=a[i])
		{
			top--;
		}
		r[i]=st[top];
		st[++top]=i;
	}
	top=0;
	for(int i=n;i>=1;i--)
	{
		while(top&&a[st[top]]>=a[i])
		{
			top--;
		}
		l[i]=st[top]-1;
		st[++top]=i;
	}
//	for(int i=1;i<=n;i++)
//	{
//		cout<<l[i]<<" ";
//	}
//	cout<<endl;
//	for(int i=1;i<=n;i++)
//	{
//		cout<<r[i]<<" ";
//	}
	for(int i=1;i<=n;i++)
	{
//		if((a[l[i]]-a[r[i]])*a[i]>ans)
//		{
//			cout<<l[i]<<" "<<r[i]<<" "<<a[i]<<endl;
//		}
		ans=max(ans,(s[l[i]]-s[r[i]])*a[i]);
//		cout<<ans<<endl;
	}
	cout<<ans;
	return 0;

}

2025/1/16 17:33
加载中...