AcWing 154. 滑动窗口
原题链接
简单
作者:
走不到也得走
,
2020-01-17 14:11:59
,
所有人可见
,
阅读 620
#include<iostream>
using namespace std;
int n,k;
const int N=1e6+10;
int a[N],q[N];
int main()
{
cin>>n>>k;
for(int i=0;i<n;i++)scanf("%d",&a[i]);
int hh=0,tt=-1;
for(int i=0;i<n;i++)
{
if(hh<=tt&&q[hh]<i-k+1)hh++;
while(hh<=tt&&a[q[tt]]>=a[i])tt--;
q[++tt]=i;
if(i>=k-1)printf("%d ",a[q[hh]]);
}
puts("");
hh=0,tt=-1;
for(int i=0;i<n;i++)
{
if(hh<=tt&&q[hh]<i-k+1)hh++;
while(hh<=tt&&a[q[tt]]<=a[i])tt--;
q[++tt]=i;
if(i>=k-1)printf("%d ",a[q[hh]]);
}
return 0;
}