广告印刷

来源:互联网 发布:世达15件网络寻线器 编辑:程序博客网 时间:2024/05/17 08:14

题目描述

最近,afy决定给HNUC印刷广告,广告牌是刷在城市的建筑物上的,城市里有紧靠着的N个建筑。afy决定在上面找一块尽可能大的矩形放置广告牌。我们假设每个建筑物都有一个高度,从左到右给出每个建筑物的高度H1,H2…HN,且0<Hi<=1,000,000,000,并且我们假设每个建筑物的宽度均为1

输入

输入由多组数据组成,每组数据第一行是N,且N <= 1,000,000。接下来N行每行一个数字,依次为Hi

输出

对于每组数据,输出一行,表示广告牌的最大面积。

样例输入

53060504555

样例输出

180

【代码】

#include <stdio.h>#define N 1005main(){    double a[N];    double maxArea=0.0,area;    int left,right;    int i,n;    scanf("%d",&n);    for(i=0;i<n;i++)      scanf("%lf",&a[i]);    for(i=0;i<n;i++)    {        left=i-1;         //从左边循环         right=i+1;        //从右边循环         while(left>=0&&a[left]>=a[i])            left--;        left++;           //左边加一次回到原来的位置         while(right<n&&a[right]>=a[i])            right++;        right--;          //右边减一次回到原来的位置         area=(right-left+1)*a[i];        if(area>maxArea)            maxArea=area;    }    printf("%.0lf\n",maxArea); }


1 0
原创粉丝点击