题解
2025-08-05 10:38:51
发布于:上海
13阅读
0回复
0点赞
依旧单调队列
#include<iostream>
#include<queue>
using namespace std;
typedef long long ll;
const int N=2e6+5;
ll n,k,a[N];
int main(){
deque<int>q;
cin>>n>>k;
for(int i=1;i<=n;i++)cin>>a[i];
for(int i=1;i<=n;i++){
//淘汰
while(q.size() && a[q.back()]>a[i])q.pop_back();
//进入
q.push_back(i);
//老死
if(q.front()==i-k)q.pop_front();
if(i-k>-1)cout<<a[q.front()]<<"\n";//输出
}
return 0;
}
这里空空如也
有帮助,赞一个