【分治】HDU1506Largest Rectangle in a Histogram

来源:互联网 发布:文物艺术品网络拍卖 编辑:程序博客网 时间:2024/06/02 04:22

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1506

#include<bits/stdc++.h>#define LL long longusing namespace std;const int N=100005;LL a[N];LL solve(LL l,LL r){    if(l==r) return a[l];    LL mid=(l+r)/2;    LL ans=max(solve(l,mid),solve(mid+1,r));    LL L=mid,R=mid+1;    LL h=min(a[L],a[R]);    ans=max(ans,h*2);    while(L>l||R<r){        if(R<r&&(L==l||a[R+1]>a[L-1])){            R++;            h=min(h,a[R]);        }else{            L--;            h=min(h,a[L]);        }        ans=max(ans,(R-L+1)*h);    }    return ans;}int main(){    LL n;    while(cin>>n&&n){        for(LL i=1;i<=n;i++) cin>>a[i];        cout<<solve(1,n)<<endl;    }    return 0;}


原创粉丝点击