1 solutions

  • 0
    @ 2024-12-10 22:28:05

    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

    Information

    ID
    550
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By