POJ-2559利用栈往前迭代

来源:互联网 发布:ubuntu命令行运行软件 编辑:程序博客网 时间:2024/06/04 01:02

Largest Rectangle in a Histogram

 POJ - 2559 
#include<iostream>#include<cstdio>#include <algorithm>#include <cstring>#include <set>#include <stack>using namespace std;const int N=int(1e5)+9;int h[N];int n;int main(){    while(cin>>n&&n){        for(int i=1;i<=n;i++){            scanf("%d",&h[i]);        }        long long ans=0;        stack<int> s;s.push(0);h[++n]=0;        for(int i=0;i<=n;i++){            while(h[i]<h[s.top()]){                long long a=h[s.top()]; s.pop();                long long b=i-s.top()-1;                if(a*b > ans)  ans=a*b;            }            s.push(i);        }        printf("%lld\n",ans);    }    return 0;}

原创粉丝点击