(I2
I103
I5
(dp0
Vmaxarrea.%l
p1
(Vmaxarea.cpp
p2
S'#include <bits/stdc++.h>\r\nusing namespace std;\r\n\r\nstruct node\r\n{\r\n    pair<int, int> range;\r\n    node *left, *right;\r\n    int min;\r\n\r\n    node(const pair<int, int> &range)\r\n    {\r\n        if(range.first<range.second)\r\n        {\r\n            int split=(range.first+range.second)/2;\r\n            left=new node({range.first, split});\r\n            right=new node({split+1, range.second});\r\n        }\r\n        this->range=range;\r\n        min=numeric_limits<int>::max();\r\n    }\r\n\r\n    void set(int pos, int value)\r\n    {\r\n        if(pos>=this->range.first && pos<=this->range.second)\r\n        {\r\n            this->min=std::min(this->min, value);\r\n            if(this->range.first!=this->range.second)\r\n            {\r\n                left->set(pos, value);\r\n                right->set(pos, value);\r\n            }\r\n        }\r\n    }\r\n\r\n    int q_min(const pair<int, int> &range)\r\n    {\r\n        if(this->range.first>range.second || this->range.second < range.first)\r\n        {\r\n            return numeric_limits<int>::max();\r\n        }\r\n        else if(this->range.first>=range.first && this->range.second<=range.second)\r\n        {\r\n            return this->min;\r\n        }\r\n        else return std::min(left->q_min(range), right->q_min(range));\r\n    }\r\n\r\n    ~node()\r\n    {\r\n        if(left!=nullptr)delete left;\r\n        if(right!=nullptr)delete right;\r\n    }\r\n};\r\n\r\nint n;\r\nvector<int> cubes;\r\nnode* tree;\r\n\r\nvoid read()\r\n{\r\n    cin>>n;\r\n    cubes.resize(n);\r\n    tree=new node({1, n});\r\n    for(int i=0;i<n;i++)\r\n    {\r\n        cin>>cubes[i];\r\n        tree->set(i+1, cubes[i]);\r\n    }\r\n}\r\n\r\nint main()\r\n{\r\n    ios::sync_with_stdio(false);\r\n    cin.tie(nullptr);\r\n    read();\r\n\r\n    int answer=0;\r\n    for(int i=1;i<n;i++)\r\n    {\r\n        for(int j=i+1;j<=n;j++)\r\n        {\r\n            answer=max(answer, (j-i+1)*tree->q_min({i, j}));\r\n        }\r\n    }\r\n\r\n    printf("%d\\n", answer);\r\n}\r\n/*\r\n11\r\n6 5 2 7 8 6 8 3 5 6 7\r\n*/\r\n'
p3
tp4
stp5
.