求助P1886,样例过了,但是RE,数组都开到一百万了QAQ
查看原帖
求助P1886,样例过了,但是RE,数组都开到一百万了QAQ
798646
Carrytkr楼主2022/9/24 14:03

代码:

#include <bits/stdc++.h>
using namespace std;
int n,m;
const int N=1e6+5;
int q1[N],q2[N];
int a[N];
int dandiao_queue()
{
    int head=1,tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q1[head]<i-m+1) head++;
        while(head<=tail&&a[i]<a[q1[tail]]) tail--;
        q1[++tail]=i;
        if(i>=m) 
		cout<<a[q1[head]]<<" ";
    }
    cout<<endl;
}
int old_queue()
{
    int head=1,tail=0;
    for(int i=1;i<=n;i++)
    {
        while(head<=tail&&q2[head]<i-m+1) head++;
        while(head<=tail&&a[i]>a[q2[tail]]) tail--;
        q2[++tail]=i;
        if(i>=m) cout<<a[q2[head]]<<" ";
    }
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    dandiao_queue();
    old_queue();
    return 0;
}
2022/9/24 14:03
加载中...