不解,救助
# include <bits/stdc++.h>
using namespace std;
struct num
{
int p, s;
};
int n, k;
int a[1000005];
int head, tail;
num q1[1000005], q2[1000005];
int main(void)
{
cin >> n >> k;
for (int i = 1; i <= n; i ++)
cin >> a[i];
head = tail = 1;
q1[1] = q2[1] = (num){1, a[1]};
for (int i = 2; i <= n; i ++)
{
tail ++;
q1[tail] = (num){i, a[i]};
if (q1[tail].p - q1[head].p == k)
head ++;
while (q1[tail - 1].s >= q1[tail].s && tail - 1 >= head)
{
q1[tail - 1] = q1[tail];
tail --;
}
if (i >= k) cout << q1[head].s << " ";
}
cout << endl;
head = tail = 1;
for (int i = 2; i <= n; i ++)
{
tail ++;
q1[tail] = (num){i, a[i]};
if (q1[tail].p - q1[head].p == k)
head ++;
while (q1[tail - 1].s <= q1[tail].s && tail - 1 >= head)
{
q1[tail - 1] = q1[tail];
tail --;
}
if (i >= k) cout << q1[head].s << " ";
}
cout << endl;
return 0;
}