1 solutions
-
0
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