(I2
I126
I5
(dp0
Vmaxarrea.%l
p1
(Vmaxarrea.cpp
p2
S'#include<iostream>\r\n#include<cstdio>\r\n#include<algorithm>\r\n#include<cstring>\r\n#define MAX_N 1048590\r\n#define INF 999999\r\nusing namespace std;\r\nint n,d[1000003],tree[2*MAX_N],m;\r\nvoid update(int idx,int l,int r,int i,int v)\r\n{\r\n    if(i<l||i>r||r<l)\r\n        return;\r\n    if(l==r)\r\n    {\r\n        tree[idx]=v;\r\n        return;\r\n    }\r\n    int mid=(l+r)/2;\r\n    update(idx*2,l,mid,i,v);\r\n    update(idx*2+1,mid+1,r,i,v);\r\n    tree[idx]=min(tree[idx*2],tree[idx*2+1]);\r\n}\r\nint getsum(int idx,int l,int r,int i,int j)\r\n{\r\n    if(r<l||r<i||j<l)\r\n        return INF;\r\n    if(i<=l&&j>=r)\r\n    {\r\n        return tree[idx];\r\n    }\r\n    int mid=(l+r)/2;\r\n    return min(getsum(idx*2,l,mid,i,j),getsum(idx*2+1,mid+1,r,i,j));\r\n}\r\nvoid add()\r\n{\r\n    int step=ceil(log2(n));\r\n    int dv=pow(2,step);\r\n    n=dv;\r\n}\r\nvoid read()\r\n{\r\n    scanf("%d", &n);\r\n    int i;\r\n    for(i=1;i<=n;i++)\r\n        scanf("%d", &d[i]);\r\n    m=n;\r\n    add();\r\n}\r\nvoid build()\r\n{\r\n    memset(tree,INF,sizeof(tree));\r\n    int i;\r\n    for(i=1;i<=n;i++)\r\n    {\r\n        if(d[i]!=0)\r\n            update(1,1,n,i,d[i]);\r\n        else\r\n            update(1,1,n,i,INF);\r\n    }\r\n}\r\nvoid solve()\r\n{\r\n    long long int i,j,maxarea=0,tekarea=0;\r\n    for(i=1;i<=m;i++)\r\n        for(j=i;j<=m;j++)\r\n        {\r\n            tekarea=getsum(1,1,n,i,j)*(j-i+1);\r\n            if(maxarea<tekarea)\r\n                maxarea=tekarea;\r\n        }\r\n    cout<<maxarea<<endl;\r\n}\r\nvoid print()\r\n{\r\n    int i,j;\r\n    for(i=0;i<=log2(n);i++)\r\n    {\r\n        for(j=pow(2,i);j<=pow(2,i+1)-1;j++)\r\n            printf("%d ", tree[j]);\r\n        printf("\\n");\r\n    }\r\n}\r\nint main()\r\n{\r\n    read();\r\n    build();\r\n    solve();\r\nreturn 0;\r\n}\r\n'
p3
tp4
stp5
.