include [HTML_REMOVED]
using namespace std;
const int N = 1000010;
int a[N],q[N],p[N];
int n,k;
int main()
{
scanf(“%d%d”,&n,&k);
for(int i = 0; i<n; i++) scanf("%d",&a[i]); //将元素放进数组
int hh = 0,tt = -1;
for(int i = 0; i<k; i++)
{
while(hh <= tt && a[i] < a[q[tt]]) tt--;
q[++tt] = i;
}
printf("%d ",a[q[hh]]);
for(int i = k; i<n; i++)
{
if(hh <= tt && i-k+1 > q[hh]) hh++;
while(hh <= tt && a[q[tt]] >= a[i]) tt--;
q[++tt] = i;
if(i >= k-1) printf("%d ",a[q[hh]]);
}
printf("\n");
hh = 0,tt = -1;
for(int i = 0; i<k; i++)
{
while(hh <= tt && a[i] > a[p[tt]]) tt--;
p[++tt] = i;
}
printf("%d ",a[p[hh]]);
for(int i = k; i<n; i++)
{
if(hh <= tt && i-k+1 > p[hh]) hh++;
while(hh <= tt && a[p[tt]] <= a[i]) tt--;
p[++tt] = i;
if(i >= k-1) printf("%d ",a[p[hh]]);
}
return 0;
}
/
for(int i = 0; i[HTML_REMOVED] nums[de.back()]) //如果nums数组内的元素比队尾元素大,就将队尾元素踢出
{
de.pop_back();
}
de.push_back(i); //将新的比对内元素大的元素的下标放进队列中
}
res.push_back(nums[de.front()]); //先将对头元素放入结果数组中
for(int i = k; i[HTML_REMOVED] nums[de.back()])
{
de.pop_back();
}
de.push_back(i);
res.push_back(nums[de.front()]);
}
/