题目链接

用单调栈计算出一个数字, 左边第一个比他小的数字的位置, 右边比第一个他小的数字的位置, 然后len = r[i] - l[i] +1. ans[len] = max(ans[len], a[i])

 #include<bits/stdc++.h>
using namespace std;
const int maxn = 2e5+;
int l[maxn], r[maxn], ans[maxn], a[maxn], q[maxn];
int main()
{
int n;
cin>>n;
for(int i = ; i<=n; i++) {
scanf("%d", &a[i]);
}
int i = , st = ;
while(i<=n) {
while(st&&a[q[st-]]>a[i]) {
r[q[st-]] = i-;
st--;
}
q[st++] = i;
i++;
}
while(st) {
r[q[st-]] = n;
st--;
}
i = n;
while(i>=) {
while(st&&a[q[st-]]>a[i]) {
l[q[st-]] = i+;
st--;
}
q[st++] = i;
i--;
}
while(st) {
l[q[st-]] = ;
st--;
}
memset(ans, , sizeof(ans));
for(int i = ; i<=n; i++) {
int len = r[i]-l[i]+;
if(ans[len]<a[i]) {
ans[len] = a[i];
}
}
for(i = n; i>=; i--) {
if(ans[i]>=ans[i-])
ans[i-] = ans[i];
}
for(int i = ; i<=n; i++) {
printf("%d ", ans[i]);
}
}

最新文章

  1. Cygwin/babun install telnet
  2. 35.两链表的第一个公共结点[Find the first common node of two linked list]
  3. VPN安装后报错:Reason442 &amp; Error56
  4. C#对HTML文档的解析
  5. 使用Jaxb2进行xml与bean的转义时Date的format设置
  6. Map:containsKey、containsValue 获取Map集合的键值的 值
  7. 第三章--Win32程序的执行单元(部分概念及代码讲解)(上 -- 多线程)
  8. UVA 11573 Ocean Currents --BFS+优先队列
  9. Code Understanding Step by Step - We Need a Task
  10. JPA事务回滚配置
  11. python 格式化日期
  12. JS,JQuery各种获取屏幕的宽度和高度
  13. HDU 5281 Senior&amp;#39;s Gun
  14. C语言之函数
  15. 关于&quot;模块计算机类型与目标计算机类型冲突&quot;的解决
  16. 第三章Hibernate关联映射
  17. springboot集成jpa
  18. STM32标准库GPIO操作
  19. C# 特性学习笔记
  20. ElasticSearch6.2.3安装Head插件

热门文章

  1. 关于EJB 时间注解与oracle数据库时间格式
  2. lightoj 1104 Birthday Paradox
  3. SQL复杂查询(子查询)
  4. mysql登录错误或者密码错误
  5. 微软 Office 2010 SP2 正式版下载大全(含简中)
  6. c++链接数据库测试,中文有问题
  7. js完美继承代码示例
  8. Dreamweaver中打开CodeSmith文件
  9. 算法导论——lec 10 图的基本算法及应用
  10. C++中顶层const和底层const