#include <iostream>
#define LL long long
using namespace std;
const int q = 100010;
int Hui[q], Yi[q];
LL Lu[q];
int main()
{
int n;
while (cin >> n && n)
{
LL Maxx = 0;
for (int i = 1; i <= n; i++)
{
cin >> Lu[i];
Hui[i] = Yi[i] = 1;
}
for (int i = 2; i <= n; i++)
{
int j = i - 1;
while (Lu[i] <= Lu[j] && j >= 1)
{
Hui[i] += Hui[j];
j = j - Hui[j]; //继续寻找
}
}
for (int i = n - 1; i >= 1; i--)
{
int j = i + 1;
while (Lu[i] <= Lu[j] && j <= n)
{
Yi[i] += Yi[j];
j = j + Yi[j];
}
}
for (int i = 1; i <= n; i++)
{
LL temp = (Lu[i] * (Hui[i] + Yi[i] - 1));
if (Maxx < temp)
Maxx = temp;
}
cout << Maxx << endl;
}
return 0;
}
HDU ACM 16 1506 Largest Rectangle in a Histogram
最新推荐文章于 2018-07-28 10:41:09 发布