#CSP201312C. 最大的矩形

    ID: 3 Type: Default 1000ms 256MiB Tried: 2150 Accepted: 426 Difficulty: 3 Uploaded By: Tags>CSPDSA 补充练习第 04 章 栈与队列数据结构单调栈

最大的矩形

题目来自第 0 次 CSP 认证 T3,评测使用自造高质量复刻数据。我们承认原始题面与大样例版权均归中国计算机学会(CCF)所有,因此题面与评测服务均免费对外开放。如果您认为我们侵犯了您的权益,可联系我们。

时间限制: 1.0 秒

空间限制: 256 MB

题目描述

在横轴上放了 nn 个相邻的矩形,每个矩形的宽度是 11,而第 i (1≤i≤n)i~(1 \le i \le n) 个矩形的高度是 hih_i。这 nn 个矩形构成了一个直方图。例如,下图中六个矩形的高度就分别是 3,1,6,5,2,33, 1, 6, 5, 2, 3。

请找出能放在给定直方图里面积最大的矩形,它的边要与坐标轴平行。对于上面给出的例子,最大矩形如下图所示的阴影部分,面积是 1010。

输入格式

从标准输入读入数据。

第一行包含一个整数 nn,即矩形的数量。

第二行包含 nn 个整数 h1,h2,⋯ ,hnh_1, h_2,\cdots, h_n,相邻的数之间由空格分隔。hih_i 是第 ii 个矩形的高度。

输出格式

输出到标准输出。

输出一行,包含一个整数,即给定直方图内的最大矩形的面积。

6
3 1 6 5 2 3
10

子任务

本题数据范围有所加强,对于所有数据,保证 1≤n≤105, 1≤hi≤1091\le n\le 10^5,~1\le h_i\le 10^9。

前 20 组数据每个测试点 4 分,后续 66 个测试点总计 20 分,需要全部通过获得。

提示

Chap 04 栈 直方图内最大矩形

利用单调栈找到两边第一个比自己小的数。