题目大意:

输入n,,1 ≤ n ≤ 100000,接下来n个数为每列的高度h ≤ hi ≤ 1000000000

求得最大矩阵的面积

Sample Input

7 2 1 4 5 1 3 3
4 1000 1000 1000 1000
0

Sample Output

8
4000

 
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n,a[],L[],R[],sta[]; // sta[]模拟栈
int main()
{
while(~scanf("%lld",&n)) {
if(n==) break;
for(int i=;i<n;i++) scanf("%lld",&a[i]);
int tail=;
for(int i=;i<n;i++) {
while(tail> && a[sta[tail-]]>=a[i]) tail--;
L[i]= tail== ? :sta[tail-]+;
sta[tail++]=i;
}
/// L[]存放向左能达到的最远下标
// for(int i=0;i<n;i++) printf("%lld ",L[i]);printf("\n");
tail=;
for(int i=n-;i>=;i--) {
while(tail> && a[sta[tail-]]>=a[i]) tail--;
R[i]= tail== ? n:sta[tail-];
sta[tail++]=i;
}
/// R[]存放向右能达到的最远下标+1
// for(int i=0;i<n;i++) printf("%lld ",R[i]);printf("\n");
ll ans=;
for(int i=;i<n;i++)
ans=max(ans,a[i]*(R[i]-L[i]));
/// R[i]-L[i]就能得到该矩阵的长度
printf("%lld\n",ans);
} return ;
}

最新文章

  1. SharePoint 2013 工作流平台的选项不可用
  2. Redis安装配置与Jedis访问数据库
  3. Window环境下搭建MyEclipse+Tomcat+MAVEN+SVN
  4. phpMyAdmin中sql-parser组件的使用
  5. Windows server上rsync的安装和使用
  6. JAVA基础----java中E,T,?的区别
  7. MySQL【第三篇】数据类型
  8. SMACSS:一个关于CSS的最佳实践-1.Overview
  9. 使用 Passenger +Apache扩展 Puppet,代替其Webrick的web框架
  10. APM和PIX飞控日志分析入门贴
  11. QTP - 描述性编程
  12. 【bzoj2875】 Noi2012—随机数生成器
  13. webdriver实用指南python版本(1)-安装开发环境
  14. QT 交叉编译工具选择
  15. BZOJ 2039 人员雇佣(最小割)
  16. View坐标系详解(getTop(),getLeft(),getX(),getY(),getLocationOnScreen(), getLocationInWindow())
  17. flask扩展 -- flask-script
  18. Python与快速排序
  19. 对drf序列化器的理解
  20. 原!操作 excel 03/07

热门文章

  1. IDEA使用的JDK版本1.9换成1.8后,在IDEA中需要改的配置
  2. Android中的SrollView滚动详解
  3. csp-s模拟测试91
  4. hdu多校第六场1005 (hdu6638) Snowy Smilel 线段树/区间最大和
  5. django中filter()和get()的区别
  6. SPSS缺失值得分析处理
  7. linux就该这么学--资料整理--持续更新
  8. maven-dependencyManagement和dependencies区别
  9. ps-通道错位制作奇幻海报
  10. leetcode题解(持续更新)