题目描述 Description

给你一个长度为N的数组,一个长为K的滑动的窗体从最左移至最右端,你只能见到窗口的K个数,每次窗体向右移动一位,如下表:

Window position Min value  Max value
[ 1 3 -1 ] -3 5 3 6 7      -1      3
1 [ 3 -1 -3 ] 5 3 6 7      -3      3
1 3 [ -1 -3 5 ] 3 6 7      -3      5
1 3 -1 [ -3 5 3 ] 6 7      -3      5
1 3 -1 -3 [ 5 3 6 ] 7     3      6
1 3 -1 -3 5 [ 3 6 7 ]     3      7

你的任务是找出窗口在各位置时的max value, min value.

输入描述 Input Description

第1行n,k,第2行为长度为n的数组

输出描述 Output Description

2行

第1行每个位置的min value

第2行每个位置的max value

样例输入 Sample Input

8 3

1 3 -1 -3 5 3 6 7

样例输出 Sample Output

-1 -3 -3 -3 3 3

3  3  5  5  6 7

数据范围及提示 Data Size & Hint

数据范围:20%: n<=500; 50%: n<=100000;100%: n<=1000000;

/*
单调队列
*/
#include<cstring>
#include<iostream>
#include<cstdio>
#define M 1000010
using namespace std;
int a[M],q[M],n,k,cnt;
int main()
{
scanf("%d%d",&n,&k);
for(int i=;i<=n;i++)
scanf("%d",&a[i]);
int head=,tail=;
q[]=;
for(int i=;i<=n;i++)
{
while(head<=tail&&q[head]+k<=i)head++;
while(head<=tail&&a[q[tail]]>a[i])tail--;
q[++tail]=i;
if(i>=k)printf("%d ",a[q[head]]);
}
printf("\n"); memset(q,,sizeof(q));
head=,tail=;
q[]=;
for(int i=;i<=n;i++)
{
while(head<=tail&&q[head]+k<=i)head++;
while(head<=tail&&a[q[tail]]<a[i])tail--;
q[++tail]=i;
if(i>=k)printf("%d ",a[q[head]]);
}
return ;
}

最新文章

  1. Oracle Dataguard之failover
  2. Sizeof运算符小结
  3. sqlite3之基本操作(二)
  4. js将日期格式转换为YYYY-MM-DD HH:MM:SS
  5. win7下如何安装JDK
  6. ajax 留言板
  7. HDU 5379 Mahjong tree
  8. linux-rm
  9. ASP.NET MVC 开篇
  10. 不一样的是不一样的,我的独家滚动条------Day35
  11. 【Java入门提高篇】Day1 抽象类
  12. sqlser 2005 使用执行计划来优化你的sql
  13. Python——爬取人口迁徙数据(以腾讯迁徙为例)
  14. 看完此文还不懂NB-IoT,你就过来掐死我吧...【转】
  15. Gym 101873F Plug It In(二分图匹配)
  16. WCF各个Service之间共享数据
  17. css颜色模式hsla和rgba
  18. 微软VBS生成Excel内容和图表示例
  19. 在react+redux+axios项目中使用async/await
  20. jquery使用FormData提交数据

热门文章

  1. UVA 1664 Conquer a New Region (Kruskal,贪心)
  2. Android(java)学习笔记143:Android中View动画之 XML实现 和 代码实现
  3. Hermite 矩阵及其特征刻画
  4. 关于POST的请求的问题的汇总
  5. uaf-湖湘杯2016game_学习
  6. Bootstrap 基本按钮
  7. vue循环出来列表里面的列表点击click事件只对当前列表有效;
  8. Noip2018 考前准备
  9. 使用 ss 命令查看连接信息
  10. lnmp一键安装包 虚拟主机问题