TLE80 MnZn求助
查看原帖
TLE80 MnZn求助
389797
Nemonade楼主2021/8/23 16:19

RT,用的单调队列,感觉自己是正解啊。。。是不是有什么地方要优化的

#include<bits/stdc++.h>
using namespace std;
const int N=1e6+5;
int a[N],q[N],l,r=-1;
int n,k;
int main(){
    cin>>n>>k;
    for(int i=0;i<n;++i){
        cin>>a[i];
        if(i-k+1>q[l]) ++l;
        while(l<=r&&a[i]<=a[q[r]])--r;
        q[++r]=i;
        if(i+1>=k) cout<<a[q[l]]<<" ";
    }
    cout<<endl;
    l=0,r=-1;
    for(int i=0;i<n;++i){
        if(i-k+1>q[l]) ++l;
        while(l<=r&&a[i]>=a[q[r]]) --r;
        q[++r]=i;
        if(i+1>=k) cout<<a[q[l]]<<" ";
    }
    return 0;
}
2021/8/23 16:19
加载中...