#include<bits/stdc++.h>
using namespace std;
const int N=1000009;
int n,k,a[N];
int q[N],head,tail,p[N];
int main(){
cin>>n>>k;
for(int i=1;i<=n;i++) cin>>a[i];
head=1,tail=0;
for(int i=1;i<=n;i++){
while(head<=tail&&q[tail]>=a[i])
tail--;
q[++tail]=a[i],p[tail]=i;
while(p[head]<=i-k) head++;
if(i>=k) cout<<q[head]<<" ";
}
cout<<endl;
memset(q,0,sizeof(q));
memset(p,0,sizeof(p));
head=1,tail=0;
for(int i=1;i<=n;i++){
while(head<=tail&&q[tail]<=a[i])
tail--;
q[++tail]=a[i],p[tail]=i;
while(p[head]<=i-k) head++;
if(i>=k) cout<<q[head]<<" ";
}
return 0;
}
①和②的head<=tail中为什么不能把等于号去掉?QAQ