很显然是单调栈

这里记录一种新的写法,这种写法基于递推,但是相比之下比单调栈更好写

#include<cstdio>
#include<map>
#include<set>
#include<queue>
#include<string>
#include<stack>
#include<vector>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
//#define endl "\n"
#define inf 0x3f3f3f3f
#define me(a,b) memset(a,b,sizeof(a))
#define maxn 100000+5
long long n,a[maxn];
int l[maxn],r[maxn];
stack<long long> st;
long long mx;
void init()
{
mx=;
while(!st.empty())
st.pop();
}
int main()
{
while(cin>>n&&n){
init();
for(int i=;i<=n;i++)
scanf("%I64d",&a[i]),l[i]=r[i]=i;
a[]=;
for(int i=;i<=n;i++){
int now=i;
while(now>&&a[i]<=a[now-]) now=l[now-];
l[i]=now;
}
for(int i=n-;i;i--){
int now=i;
while(now<n&&a[i]<=a[now+]) now=r[now+];
r[i]=now;
}
for(int i=;i<=n;i++)
mx=max(mx,a[i]*(r[i]-l[i]+));
cout<<mx<<endl;
}
}

最新文章

  1. ASP.NET Core 中文文档 第三章 原理(12)托管
  2. C/C++实践笔记 007
  3. UIKit - scrollView缩放、滚动
  4. awk 命令
  5. Nginx系列3之Nginx+tomcat
  6. call()\apply()\bind()备忘录
  7. 【html/css】html/css命名规范
  8. ReentrantLock
  9. 将你的Asp.NET应用程序嵌入到SharePoint
  10. Android HttpClient get传递数组
  11. bind()
  12. freebsd安装和图形界面安装
  13. Springboot集成ECharts
  14. vue.js用select实现省,市,提交后,默认显示省,市信息
  15. vue, js 正则邮箱验证、匹配非法字符、匹配中文
  16. jqury的ajax
  17. 【DL.AI】《Structuring Machine Learning Projects》笔记
  18. Principal Component Analysis(PCA)
  19. php api接口校验规则示例
  20. wm_concat()函数

热门文章

  1. 基于 H5和 3D WebVR 的可视化虚拟现实培训系统
  2. SPH液面重构过程中的问题
  3. Flutter报错 Waiting for another flutter command to release the startup lock...
  4. 07-SpringMVC01
  5. [Redis-CentOS7]Redis集合操作(四)
  6. 物理机安装ESXI6.7提示No Network Adapters的解决方案
  7. java之时间戳处理
  8. 深入源码分析SpringMVC执行过程
  9. $.getJSON获取json数据失败
  10. 如何利用border书写三角形,建议考虑正方形