代码:
#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e6+5;
int q1[N],q2[N];
int a[N];
int dandiao_queue()
{
int head=1,tail=0;
for(int i=1;i<=n;i++)
{
while(head<=tail&&q1[head]<i-m+1) head++;
while(head<=tail&&a[i]<a[q1[tail]]) tail--;
q1[++tail]=i;
if(i>=m)
cout<<a[q1[head]]<<" ";
}
cout<<endl;
}
int old_queue()
{
int head=1,tail=0;
for(int i=1;i<=n;i++)
{
while(head<=tail&&q2[head]<i-m+1) head++;
while(head<=tail&&a[i]>a[q2[tail]]) tail--;
q2[++tail]=i;
if(i>=m) cout<<a[q2[head]]<<" ";
}
}
int main()
{
cin>>n>>m;
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
dandiao_queue();
old_queue();
return 0;
}