‹ 上一题 下一题 ›

g5-08306. 窗口里的最大值 未做

1000 ms 256 MB 测试点 10 通过率 100% GESP-55级·STLdeque

题目描述

读入 个整数和一个窗口长度 。窗口从序列最左端开始,每次向右滑一格,共得到 个窗口;对每个窗口输出其中的最大值。

与 都不小,逐个窗口扫 个数会超时。可以用单调双端队列:队列里存下标,并让这些下标对应的值从队头到队尾递减——新元素进队尾前,先把队尾所有值不大于它的下标弹掉(它们不可能再成为任何窗口的最大值);队头下标一旦滑出窗口范围,就把它从队头弹掉。这样每个元素最多进出队一次,每个窗口的答案就是队头下标对应的值。

输入格式

第一行两个整数 、()。

第二行 个整数 ()。

输出格式

一行 个整数:依次为每个窗口的最大值,用空格分隔。

样例

输入:

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

输出:

3 3 5 5 6 7

六个窗口的最大值依次是 3、3、5、5、6、7,例如第 4 个窗口 里最大是 5。

数据范围

。单调队列从头到尾「递减」,队头才是最大值——方向存成「递增」,队头就变成了最小值。

输入
输出

            
答案