思路:枚举起点和终点可枚举到所有连续子区间,维护区间内的最小高度,然后进行面积计算,找出最大值即可。
代码:
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
const int N = 1005;
int h[N];
int main()
{
int n,ans=0;
cin>>n;
for(int i=0;i<n;i++)
cin>>h[i];
for(int i=0;i<n;i++)
{
int low=h[i];
for(int j=i;j<n;j++)
{
low=min(low,h[j]);
ans=max(ans,(j-i+1)*low);
}
}
cout<<ans<<endl;
return 0;
}