#768. 【基础】滑动窗口 /【模板】单调队列

【基础】滑动窗口 /【模板】单调队列

说明

【模板】单调队列

题目描述

给定一个长度为nn的数组。有一个大小为kk的滑动窗口从数组的最左端移动到最右端。你可以看到窗口中的kk个数字。窗口每次向右滑动一个数字的距离。

下面是一个例子:

数组是 [1 3 -1 -3 5 3 6 7], k = 3

窗口位置 最小值 最大值
[1  3  -1]  -3  5  3  6  7 -1 3
1  [3  -1  -3]  5  3  6  7 -3 33
1  3  [-1  -3  5]  3  6  7 -33 5
1  3  -1  [-3  5  3]  6  7 -3 55
1  3  -1  -3  [5  3  6]  7 3 6
1  3  -1  -3  5  [3  6  7] 33 7

你的任务是得到滑动窗口在每个位置时的最大值和最小值。

输入格式

输入包括两行。

第一行包括nnkk,分别表示数组的长度和窗口的大小。

第二行包括nn个数字。

输出格式

输出包括两行。

第一行包括窗口从左至右移动的每个位置的最小值。

第二行包括窗口从左至右移动的每个位置的最大值。

样例

8 3
1 3 -1 -3 5 3 6 7
-1 -3 -3 -3 3 3
3 3 5 5 6 7

数据范围

n106n\leqslant 10^6

来源

  • 洛谷P1886
  • POJ2823