作者:
NCpaste
,
2023-05-25 15:21:23
,
所有人可见
,
阅读 3
#include <iostream>
#include <cstring>
using namespace std;
const int N = 1e6 + 10;
int a[N], ind[N];
int n, k;
int main ()
{
cin >> n >> k;
for (int i = 0; i < n; i ++)
{
cin >> a[i];
}
int ll, rr;
ll = rr = 0;
for (int i = 0; i < n; i ++)
{
if (ll < rr && ind[ll] < i-k+1) ll ++;
while (ll < rr && a[i] < a[ind[rr-1]]) rr --;
ind[rr++] = i;
if (i >= k-1)
cout << a[ind[ll]] << " ";
}
cout << endl;
memset(ind, 0, sizeof ind);
ll = rr = 0;
for (int i = 0; i < n; i ++)
{
if (ll < rr && ind[ll] < i-k+1) ll ++;
while (ll < rr && a[i] > a[ind[rr-1]]) rr --;
ind[rr++] = i;
if (i >= k-1)
cout << a[ind[ll]] << " ";
}
cout << endl;
return 0;
}