#P2796. 滑动窗口最大值

滑动窗口最大值

题目描述

有一个 1×n1 \times n 的矩阵,里面有 nn 个整数。

现在有一个长度为 kk 的木板,一开始木板盖住了矩阵的第 1k1 \sim k 个数。每次将木板向右移动一个单位,直到木板的右端与第 nn 个数重合。

每次移动前,输出当前被木板盖住的数字中的最大值。

输入格式

第一行包含两个整数 n,kn, k,分别表示矩阵的长度和木板的长度。

第二行包含 nn 个整数,表示矩阵中的元素,相邻整数之间用一个空格分隔。

输出格式

nk+1n-k+1 行,每行一个整数。第 ii 行表示第 ii+k1i \sim i+k-1 个数中的最大值。

样例

5 3
1 5 3 4 2
5
5
4

样例解释 木板初始覆盖第 131 \sim 3 个数 [1,5,3][1,5,3],最大值为 55;向右移动一次,覆盖 [5,3,4][5,3,4],最大值为 55;再移动一次,覆盖 [3,4,2][3,4,2],最大值为 44。共输出 33 行。

数据范围与提示

  • 对于 20%20\% 的数据:1kn1031 \le k \le n \le 10^3
  • 对于 50%50\% 的数据:1kn1041 \le k \le n \le 10^4
  • 对于 100%100\% 的数据:1kn2×1061 \le k \le n \le 2 \times 10^6,矩阵中的元素均为正整数且大小不超过 10410^4