历时一个月终于在摸鱼与学习中AC了她

#include <iostream>
#include <queue>
using namespace std;

int n, k;
int a[1000005];

deque<int>maxx, minn;

int main() {
	ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
	cin >> n >> k;
	for (int i = 1; i <= n; i++) {
		cin >> a[i];
	}

	for (int i = 1; i <= n; i++) {
		//让框保持在k个格子以内
		if (!minn.empty() && i - minn.front() >= k)
			minn.pop_front();

		//k=3, a1 = 3 a2 = 2, i = 3,a[3] = 1
		//跑完while后队列里面只剩3即最小值a3=1的位置
		while (!minn.empty() && a[i] <= a[minn.back()]) {
			minn.pop_back();
		}
		//不管怎么样都推i入列尾
		minn.push_back(i);
		//i>=k保证每次都是处理K个元素
		if (i >= k)
			printf("%d ", a[minn.front()]);
	}

	printf("\n");
	//同上
	for (int i = 1; i <= n; i++) {
		if (!maxx.empty() && i - maxx.front() >= k)
			maxx.pop_front();
		while (!maxx.empty() && a[i] >= a[maxx.back()]) {
			maxx.pop_back();
		}
		maxx.push_back(i);
		if (i >= k)
			printf("%d ", a[maxx.front()]);
	}
	return 0;
}