You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

41 lines
1.1 KiB
C++

#include <cstdio>
#include <queue>
using namespace std;
const int N = 1e6 + 10;
int m1[N], m2[N];
int main()
{
typedef pair<int, int> pii;
deque<pii> q1, q2;
int n, k, x;
while (~scanf("%d%d", &n, &k))
{
q1.clear(), q2.clear();
for (int i = 0; i < n; i++)
{
scanf("%d", &x);
while (!q1.empty() && q1.back().first >= x)
q1.pop_back();
q1.push_back(make_pair(x, i));
while (!q2.empty() && q2.back().first <= x)
q2.pop_back();
q2.push_back(make_pair(x, i));
if (i >= k - 1)
{
while (!q1.empty() && q1.front().second <= i - k)
q1.pop_front();
m1[i] = q1.front().first;
while (!q2.empty() && q2.front().second <= i - k)
q2.pop_front();
m2[i] = q2.front().first;
}
}
for (size_t i = k - 1; i < n; i++)
printf("%d ", m1[i]);
putchar('\n');
for (size_t i = k - 1; i < n; i++)
printf("%d ", m2[i]);
putchar('\n');
}
return 0;
}