1 条题解

  • 0
    @ 2025-9-9 23:58:15

    C++ :

    #include <cstdio>
    #include <iostream>
    #include <cstdlib>
    #include <cstring>
    #include <algorithm>
    #include <vector>
    #include <deque>
    
    using namespace std ;
    int n,i,j,l,r,a[100002],q[100002],ll[100002],rr[100002];
    long long maxn,s[100002];
    int main()
    {
    	//freopen("feelgood.in","r",stdin);
    	//freopen("feelgood.out","w",stdout);
    	cin>>n;
    	for(i=1;i<=n;i++)
    	{
    		cin>>a[i];
    		s[i]=s[i-1]+a[i];
    	}
    	l=1;r=0;
    	memset(ll,0,sizeof(ll));
    	memset(rr,0,sizeof(rr));
    	memset(q,0,sizeof(q));
    	for(i=1;i<=n+1;i++)
    	{
    		while(a[i]<a[q[r]]&&l<=r)
    			rr[q[r--]]=i-1;
    	    q[++r]=i;
    	}
    	l=1;r=0;
    	memset(q,0,sizeof(q));
    	for(i=n;i>=0;i--)
    	{
    		while(a[i]<a[q[r]]&&l<=r)
    			ll[q[r--]]=i+1;
    		q[++r]=i;
    	}
    	maxn=0;
    	for(i=1;i<=n;i++)
    	  if((s[rr[i]]-s[ll[i]-1])*a[i]>maxn)
    	    maxn=(s[rr[i]]-s[ll[i]-1])*a[i];
    	cout<<maxn;
    }
    
    • 1

    信息

    ID
    2204
    时间
    1000ms
    内存
    128MiB
    难度
    (无)
    标签
    递交数
    0
    已通过
    0
    上传者