#225. 滑动窗口

滑动窗口

本题没有可用的提交语言。


请 C++ 选手不要在本题使用万能头。

题目描述

给定一个长度为 nn 的数组,以及一个长度为 kk 的滑动窗口,窗口从数组的最左端移动到最右端。每次你只能看到窗口内的 kk 个数字,窗口每次向右移动一个位置。

你的任务是求出窗口在每个位置时,窗口内的最小值和最大值。

下面是示例数组 [1,3,1,3,5,3,6,7][1, 3, -1, -3, 5, 3, 6, 7]k=3k = 3 时的情况:

窗口位置 最小值 最大值
[1 3 -1] -3 5 3 6 7 -1 3
1 [3 -1 -3] 5 3 6 7 -3
1 3 [-1 -3 5] 3 6 7 5
1 3 -1 [-3 5 3] 6 7
1 3 -1 -3 [5 3 6] 7 3 6
1 3 -1 -3 5 [3 6 7] 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

数据规模与约定

对于全部的测试点,保证 1n1061 \leq n \leq 10^61kn1 \leq k \leq n,数组中的元素绝对值不超过 10910^9