测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

A37474. (注.input()输入函数的括号中不允许添加任何信息)编程实现:工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤106),且每列砖的数量为Ki(1≤Ki≤104,相邻两列砖之间无缝隙),每块砖的长宽高都为1。小蓝为了美化这面墙,需要在这面墙中找到一块面积最大的矩形用于涂鸦,那么请你帮助小蓝找出最大矩形,并输出其面积。例如:N = 6,表示这面墙有6列,每列砖的数量依次为3、2、1、…

填空题 困难

题目描述

题目描述:

(注.input()输入函数的括号中不允许添加任何信息)

编程实现:

工人砌了一面奇特的砖墙,该墙由N列砖组成(1≤N≤106),且每列砖的数量为Ki(1≤Ki≤104,相邻两列砖之间无缝隙),每块砖的长宽高都为1。

小蓝为了美化这面墙,需要在这面墙中找到一块面积最大的矩形用于涂鸦,那么请你帮助小蓝找出最大矩形,并输出其面积。

例如:N = 6,表示这面墙有6列,每列砖的数量依次为3、2、1、5、6、2,如下图:

图中虚线部分是一块面积最大的矩形,其面积为10。

输入描述

第一行输入一个正整数N(1≤N≤10^6),表示这面砖墙由几列砖组成

第二行输入N个正整数Ki(1≤Ki≤10^4),表示每列砖的数量,正整数之间以一个空格隔开

输出描述

输出一个正整数,表示最大矩形的面积

样例输入

6

3 2 1 5 6 2

样例输出

10

参考答案

n=int(input()) ks=list(map(int,input().split())) sizes=[] for i,k in enumerate(ks): left_i=right_i=i while left_i!=0: if ks[left_i-1]>=k: left_i-=1 else: break while right_i!=n-1: if ks[right_i+1]>=k: right_i+=1 else: break size=(right_i-left_i+1)*k sizes.append(size) print(max(sizes))
上一题 下一题