美文网首页编程练习
编程练习-2022-06-05-Andy

编程练习-2022-06-05-Andy

作者: nase_luobeng | 来源:发表于2022-06-05 18:43 被阅读0次

    题目描述

    共n条木板紧密排列在一条直线上,从左到右的第i条高度为h[i],宽度为1。你希望在这些木条上找到一左一右两个木条,从左到右拉一个横幅。当然横幅的高度会是以这两个木条中较矮的那个为准。请问横幅的最大面积是多少?

    输入输出格式

    输入格式

    输入文件banner.in 输入第一行为正整数n,n<=100000,第二行为整数h[1],h[2],..,h[n], 均在0到10000之间。

    输出格式

    输出文件banner.out 输出一个整数

    样例数据

    输入数据

    3
    2 1 3

    输出数据

    6

    标签

    普及/提高-

    AC代码

    #include <bits/stdc++.h>
    using namespace std;
    int main(){
        freopen("banner.in","r",stdin);
        freopen("banner.out","w",stdout);
        long long n,h[200000];
        cin>>n;
        for(long long i=1;i<=n;i++)cin>>h[i];
        long long l=1,r=n,ans=0;
        while(l<r){
            long long hei=min(h[l],h[r]);
            long long wdh=r-l+1;
            long long area=hei*wdh;
            ans=max(ans,area);
            if(h[l]<h[r])l++;
            else r--;
        }
        cout<<ans;
        return 0;
    }
    

    相关文章

      网友评论

        本文标题:编程练习-2022-06-05-Andy

        本文链接:https://www.haomeiwen.com/subject/xwnrmrtx.html