神奇
滑动窗口优先队列过了qwq
绝对不是考试时没想到单调队列
#include <bits/stdc++.h>
using namespace std;
typedef pair<int, int> PII;
priority_queue<PII, vector<PII>, greater<PII>> h;
priority_queue<PII> h1;
const int N = 1e6 + 10;
int a[N];
int mp[N];
int n, k;
int main()
{
scanf("%d%d", &n, &k);
for (int i = 1; i <= n; i ++ ) scanf("%d", &a[i]), mp[i]= 1;
for (int i = 1; i <= k; i ++ ) h.push({a[i], i});
printf("%d ", h.top().first);
for (int i = 1; i <= n - k; i ++ )
{
h.push({a[i + k], i + k});
mp[i] = 0;
while (mp[h.top().second] == 0 && h.size()) h.pop();
printf("%d ", h.top().first);
}
puts("");
for (int i = 1; i <= k; i ++ ) h1.push({a[i], i});
printf("%d ", h1.top().first);
for (int i = 1; i <= n; i ++ ) mp[i] = 1;
for (int i = 1; i <= n - k; i ++ )
{
h1.push({a[i + k], i + k});
mp[i] = 0;
while (mp[h1.top().second] == 0 && h1.size()) h1.pop();
printf("%d ", h1.top().first);
}
}