
7 2 1 4 5 1 3 3 4 1000 1000 1000 1000 0
8 4000
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
#define M 100005
typedef long long in;
in l[M],r[M],h[M];
int main(){
in n;
while(cin>>n && n){
in i,j;
for(i=0;i<=n;i++){
l[i]=i;
r[i]=i;
}
for(i=1;i<=n;i++){
cin>>h[i];
j=i-1;
while(l[i]!=1 && h[i]<=h[j]){
l[i]=l[j];
j=l[j]-1;
}
}
for(i=n;i>=1;i--){
j=i+1;
while(r[i]!=n && h[i]<=h[j]){
r[i]=r[j];
j=r[j]+1;
}
}
in ans=0;
for(i=1;i<=n;i++){
ans=max(ans,(r[i]-l[i]+1)*h[i]);
}
cout<<ans<<endl;
}
return 0;
}hdu 1506 Largest Rectangle in a Histogram DP
原文地址:http://blog.csdn.net/hyccfy/article/details/42869613