这个是单调队列的入门题目。值得注意的一点是队列中的数的index是单调递增的,所以从队首删除的时候从前向后循环找到第一个index满足>= i - k + 1条件的元素作为队首元素就可以了,这也是我一开始没想明白的一点。

 //#include "stdafx.h"
#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
int n, k, a[], q[];
void max_value()
{
int front = , end = ;
for (int i = ; i < n; i++)
{
while (a[q[end]] <= a[i] && end >= front)
{
end--;
}
q[++end] = i;
while (q[front] < i - k + && front < end)
{
front++;
}
if (i >= k - )
printf("%d ", a[q[front]]);
}
puts("");
}
void min_value()
{
int front = , end = ;
for (int i = ; i < n; i++)
{
while (a[q[end]] >= a[i] && end >= front)
{
end--;
}
q[++end] = i;
while (q[front] < i - k + && front < end)
{
front++;
}
if (i >= k - )
printf("%d ", a[q[front]]);
}
puts("");
}
int main()
{
cin >> n >> k;
for (int i = ; i < n; i++)
{
scanf("%d", &a[i]);
}
min_value();
memset(q, , sizeof(q));
max_value();
//system("pause");
return ;
}

最新文章

  1. js进阶
  2. usaco 2010年3月银组题解
  3. 收藏一些python的小技能
  4. ArcEngine下投影坐标和经纬度坐标的相互转换
  5. Win7任务计划自由预设系统定时自动关机
  6. [原创]C语言利用pcre正则表达式库
  7. Context Switch Definition
  8. 使用JasperReport+iReport进行Web报表开发
  9. PXE高效能批量网络装机
  10. pycharm提示This inspection detects instance attribute definition outside __init__ method
  11. MyEvent.SetEvent; // 同步信号置位
  12. 23-新建maven 项目
  13. JSONP简单例子
  14. php生成文字图片效果
  15. sql prompt 不能用
  16. Selenium 方法封装 一
  17. 20145312 《Java程序设计》第2周学习总结
  18. 在写一个iOS应用之前必须做的7件事(附相关资源)
  19. CSS 经典三列布局
  20. 虚拟机如何设置U盘启动项

热门文章

  1. 操作 AutoIT:界面与自动化操作结合来简化日常劳动: .Net Reactor验证License,设置License,创建License,截图AutoIt自动化实现。(六)
  2. 深入理解java虚拟机----&gt;java内存区域与内存溢出异常
  3. Spring 注释标签@Resource @Autowired 和@Inject的区别
  4. bzoj4004
  5. js的常用正则表达式
  6. IReport制作报表——日期时间显示格式
  7. virtualBox中的centOS虚拟机硬盘扩容
  8. Java SE ,Java EE和Java ME 的区别
  9. HDOJ-2048
  10. myeclipse 重新关联项目和svn