POJ2559-Largest Rectangle in a Histogram
http://poj.org/problem?id=2559
当初写出来老高兴了呢。。。
#include<cstdio> #define N 100001 using namespace std; int l[N],r[N],h[N]; int main(void) { int n,i; while(scanf("%d",&n),n) { for(i=1;i<=n;i++) { scanf("%d",&h[i]); l[i]=r[i]=i; } for(i=1;i<=n;i++) while(l[i]>1&&h[l[i]-1]>=h[i]) l[i]=l[l[i]-1]; for(i=n;i>=1;i--) while(r[i]<n&&h[r[i]+1]>=h[i]) r[i]=r[r[i]+1]; __int64 ans=0; for(i=1;i<=n;i++) { __int64 temp=(__int64)(r[i]-l[i]+1)*h[i]; if(ans<temp) ans=temp; } printf("%I64d\n",ans); } return 0; }