例题 滑动窗口
#include<bits/stdc++.h>
using namespace std;
long long a[1000009];
int main ()
{
int n,k,i;
cin>>n>>k;
for(i=1;i<=n;i++)
{
cin>>a[i];
}
deque<long long >q,q1;
for(i=1;i<=n;i++) //输出当前窗口的最小值
{
while(q.size()&&q.back()>=a[i])
{
q.pop_back();
}
q.push_back(a[i]);
if (i-k>=1&&q.front()==a[i-k])
q.pop_front();
if (i>=k)
cout<<q.front()<<" ";
}
cout<<'\n';
q.clear();
for(i=1;i<=n;i++) //输出当前窗口的最大值
{
while(q1.size()&&q1.back()<=a[i])
q1.pop_back();
q1.push_back(a[i]);
if (i-k>=1&&q1.front()==a[i-k])
q1.pop_front();
if (i>=k)
{
cout<<q1.front()<<" ";
}
}
cout<<'\n';
return 0;
}