题目链接:https://loj.ac/problem/10175
题目大意:
#include <bits/stdc++.h>
#define LL long long
using namespace std;
int a[2000005];
struct node{
int w, i;
}q1[2000005];
int main()
{
int n, k;
scanf("%d%d", &n, &k);
for(int i=1; i<=n; i++){
scanf("%d", &a[i]);
}
int L1=1, R1=0;
for(int i=1; i<=k-1; i++){
while(L1<=R1&&q1[R1].w>=a[i]){
R1--;
}
q1[++R1]=node{a[i], i};
}
for(int i=k; i<=n; i++){
while(L1<=R1&&i-q1[L1].i>=k){
L1++;
}
while(L1<=R1&&q1[R1].w>=a[i]){
R1--;
}
q1[++R1]=node{a[i], i};
printf("%d ", q1[L1].w);
}
printf("\n");
L1=1, R1=0;
for(int i=1; i<=k-1; i++){
while(L1<=R1&&q1[R1].w<=a[i]){
R1--;
}
q1[++R1]=node{a[i], i};
}
for(int i=k; i<=n; i++){
while(L1<=R1&&i-q1[L1].i>=k){
L1++;
}
while(L1<=R1&&q1[R1].w<=a[i]){
R1--;
}
q1[++R1]=node{a[i], i};
printf("%d ", q1[L1].w);
}
printf("\n");
return 0;
}