P1886 【模板】单调队列 / 滑动窗口

点击查看代码
#include<bits/stdc++.h>
using namespace std;

const int N=1e6+10;
int k,n;
int a[N],q[N];
int hh=0,tt=-1;

int main()
{
    ios::sync_with_stdio(0),cin.tie(0);
    cin>>n>>k;

    for(int i=0;i<n;i++) cin>>a[i];

    for(int i=0;i<n;i++){
        if(tt>=hh&&q[hh]<i-k+1) hh++;

        while(tt>=hh&&a[q[tt]]>=a[i]) tt--;

        q[++tt]=i;

        if(i-k+1>=0) cout<<a[q[hh]]<<' ';
    }

    cout<<endl;

    hh=0,tt=-1;
    for(int i=0;i<n;i++){
        if(tt>=hh&&q[hh]<i-k+1) hh++;

        while(tt>=hh&&a[q[tt]]<=a[i]) tt--;

        q[++tt]=i;

        if(i-k+1>=0) cout<<a[q[hh]]<<' ';
    }

    return 0;
}
posted @ 2026-02-06 20:19  AnoSky  阅读(5)  评论(0)    收藏  举报