ACM模式:
#include<iostream>
#include<deque>
using namespace std;
const int N = 1000010;
int a[N];
int main() {
int n, k;
cin >> n >> k;
for(int i = 0; i < n; i++) scanf("%d", &a[i]);
deque<int>q1;
for(int i = 0; i < n; i++) {
//对头元素出队
if(!q1.empty() && q1.front() < i - k + 1) q1.pop_front();
//队尾元素入队
while(!q1.empty() && a[i] <= a[q1.back()]) q1.pop_back();
q1.push_back(i);
if(i >= k - 1) printf("%d ", a[q1.front()]);
}
cout << endl;
deque<int>q2;
for(int i = 0; i < n; i++) {
//对头元素出队
if(!q2.empty() && q2.front() < i - k + 1) q2.pop_front();
//队尾元素入队
while(!q2.empty() && a[i] >= a[q2.back()]) q2.pop_back();
q2.push_back(i);
if(i >= k - 1) printf("%d ", a[q2.front()]);
}
return 0;
}