poj 2082 Terrible Sets

来源:互联网 发布:劲舞团淘宝卖家 编辑:程序博客网 时间:2024/06/11 02:53

题意:给你一堆相邻的矩形,给你宽和高,给其中最大的矩形面积。

思路:贪心做法,枚举那个矩形的高为真个大矩形的高,然后往2边扩展,知道存在矩形的高低于这个高度,然后总的宽度乘以高度。

#include<cstdio>#include<cstring>#include<iostream>#define N 50001#define max(a1,b1) (a1)>(b1)?(a1):(b1)using namespace std;int w[N],h[N];int main(void){    int n;    while(cin>>n,n!=-1)    {      long long ans = -1;      for(int i=1;i<=n;++i)       scanf("%d %d",&w[i],&h[i]);      //选取那个高作为整个大矩形高的的柱子      for(int i=1;i<=n;++i)      {          long long sum = w[i];         for(int e=i-1;e>=1;--e)          if(h[e]>=h[i])          sum += w[e];         else            break;         for(int e=i+1;e<=n;++e)            if(h[e]>=h[i])            sum += w[e];           else           break;         ans = max(ans,sum*h[i]);      }      cout<<ans<<endl;    }    return 0;}