网址:https://www.luogu.org/problem/P2032
题意:
裸的滑动窗口。
题解:
单调队列一遍过就行。因为有$2e6$个数,推荐C风格读写并手写队列。
AC代码:
#include <iostream>
#include <cstdio>
#include <deque>
using namespace std;
int num[2000005];
struct node
{
int num,pos;
node()
{
num=0,pos=0;
}
node(int a,int b)
{
num=a,pos=b;
}
};
node que[200005];
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int n,m;
scanf("%d%d",&n,&m);
for(int i=0;i<n;++i)
scanf("%d",&num[i]);
//queue
int head=1,tail=0;
int i;
for(i=0;i<m;++i)
{
while(head<=tail&&que[tail].num<=num[i])
--tail;
que[++tail]=node(num[i],i);
}
printf("%d
",que[head].num);
for(;i<n;++i)
{
while(head<=tail&&que[tail].num<=num[i])
--tail;
que[++tail]=node(num[i],i);
while(que[head].pos<i-m+1)
++head;
printf("%d
",que[head].num);
}
return 0;
}