poj2082

来源:互联网 发布:linux下i2c应用层读写 编辑:程序博客网 时间:2024/06/07 04:00

http://poj.org/problem?id=2082

题意蛮难懂的 其实和poj2559(有图示)一样的

碰到很多次了..

#include<cstdio>#define MAX(a,b) (a>b?a:b)struct {int w,h;}a[50005];struct{int pos,len;}l[50005],r[50005];int n;void solve(){for(int i=1;i<=n;i++){l[i].len=a[i].w;int j=i-1;while(j>0&&a[i].h<=a[j].h){l[i].len+=l[j].len;j=l[j].pos;}l[i].pos=j;}for(int i=n;i>=1;i--){r[i].len=a[i].w;int j=i+1;while(j<n+1&&a[i].h<=a[j].h){r[i].len+=r[j].len;j=r[j].pos;}r[i].pos=j;}int ans=0;for(int i=1;i<=n;i++){int t=a[i].h*(l[i].len+r[i].len-a[i].w);ans=MAX(ans,t);}printf("%d\n",ans);}int main(){while(scanf("%d",&n)==1&&n!=-1){for(int i=1;i<=n;i++)scanf("%d%d",&a[i].w,&a[i].h);solve();}return 0;}



0 0
原创粉丝点击