双端单调队列,为什么RE?求助大佬
查看原帖
双端单调队列,为什么RE?求助大佬
680982
zhczcg314楼主2022/12/11 12:06
#include<iostream>
#include<deque>
using namespace std;
deque<int> q;
deque<int> p;
int n,k,nums[100005];
int main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++){
        cin>>nums[i];
    }
    for(int i=1;i<=n;i++){
        while(!q.empty()&&q.front()<=i-k){
            q.pop_front();
        }
        while(!q.empty()&&nums[q.back()]>=nums[i]){
            q.pop_back();
        }
        q.push_back(i);
        if(i>=k){
            cout<<nums[q.front()]<<" ";
        }
    }
    cout<<endl;
    for(int i=1;i<=n;i++){
        while(!p.empty()&&p.front()<=i-k){
            p.pop_front();
        }
        while(!p.empty()&&nums[p.back()]<=nums[i]){
            p.pop_back();
        }
        p.push_back(i);
        if(i>=k){
            cout<<nums[p.front()]<<" ";
        }
    }
    cout<<endl;
    return 0;
}
2022/12/11 12:06
加载中...