对于每一个元素,预处理出它作为最小值,两边可以作用到的最大位置。比如下标∈[0,8]的这个数组:1 8 6 2 5 4 3 8 7,1可以作用到所有区间,2可以作用到区间[1,8],第一个8可以作用到[1,7]。也就是说从两边分别找到第一个大于等于这个元素的位置,然后标记,其实就是找最宽的区间长度。可能左边更宽也可能右边更宽,对所有元素的max(a[i]*(i-l[i])),a[i]*(r[i]-i)) 求max就是答案了。

 #include <bits/stdc++.h>
using namespace std;
#define maxn 50050
int a[maxn],l[maxn],r[maxn];
int main(){
std::ios::sync_with_stdio();
cin.tie();
int n; cin>>n;
for(int i=;i<n;i++) cin>>a[i]; for(int i=;i<n;i++){//预处理 找到可以以a[i]为最小值的区间
int ll=,rr=n-;
while(a[ll]<a[i]) ll++;
l[i]=ll;
while(a[rr]<a[i]) rr--;
r[i]=rr;
}
int maxx=; for(int i=;i<n;i++)
maxx=max(max(maxx,a[i]*(i-l[i])),a[i]*(r[i]-i));
cout<<maxx<<endl;
return ;
}

最新文章

  1. 关于JavaScript设计模式(一)
  2. oracle 函数写法 总结
  3. storm坑之---传递对象
  4. struts2配置的ajax参数传递方法
  5. 在xml文件中写入&amp;符号时需要对其进行转义
  6. duplicate symbol _OBJC_METACLASS_$ 报错记录
  7. 【BZOJ 1491】 [NOI2007]社交网络
  8. HALCON 简介
  9. Js--AJAX的小知识(一):ajax的五种状态
  10. 【&#9733;】微信之于QQ的市场哲学
  11. 当map遇到parseInt
  12. [转] ssh穿透??未验证。。。
  13. Openstack(十七)部署快存储cinder
  14. HDU 3533 Escape(BFS+预处理)
  15. Appium使用Python运行appium测试的实例
  16. C++学习笔记--异常简介
  17. (转载)一位资深程序员大牛给予Java初学者的学习建议
  18. VUE通过索引值获取数据不渲染的问题
  19. SpringMVC简单的文件上传
  20. 8-----BBS论坛

热门文章

  1. 自动检测GD库支持的图像类型
  2. rancher中级(一)(rancher的存储,网络)
  3. HDU 5775 L - Bubble Sort 树状数组
  4. tcpdump安装配置及抓包分析
  5. Vertical roller mill from SBM
  6. Python 魔术方法及调用方式
  7. Oracle子查询和多表查询
  8. Docker | 第一章:Docker简介
  9. java环境安装(win7)
  10. personalWebsite_1:历史记录汇总