#include #include #include #include using namespace std; int main() { int t, n, temp, sol = 0; stack st; vector height; vector r(n + 1, 0); vector l(n + 1, 0); scanf("%d",&n); while (n--) { scanf("%d",&temp); height.push_back(temp); } // zleva for (int i = 0; i < height.size(); i++) { while (!st.empty()) { if (height[i] <= height[st.top()]) st.pop(); else break; } if (st.empty()) t = -1; else t = st.top(); l[i] = i-t-1; st.push(i); } while (!st.empty()) st.pop(); // zprava for(int i = height.size() - 1; i >= 0; i--) { while (!st.empty()) { if (height[i] <= height[st.top()]) st.pop(); else break; } if (st.empty()) t = height.size(); else t = st.top(); r[i] = t - i - 1; st.push(i); } for (int i = 0; i < height.size(); i++) { sol = max(sol, height[i] * (l[i] + r[i] + 1)); } printf("%d\n",sol); return 0; }