萌新90分WA求助

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

houzhiyuan @ 2020-04-17 07:20:59

第六个测试点WA了,是找最大值错了

#include<bits/stdc++.h>
using namespace std;
long long n,m,head,tail,a[1000001],q[1000001];
int main() {
    cin>>n>>m;
    tail=1;
    head=1;
    for(int i=1; i<=n; i++) {
        cin>>a[i];
    }
    q[head]=1;
    for(int i=2; i<m; i++) {
        while(a[i]<a[q[tail]]&&head<=tail) {
            tail--;
        }
        q[++tail]=i;
    }
    for(int i=m; i<n; i++) {
        if(i-q[head]==m) {
            head++;
        }
        while(a[i]<a[q[tail]]&&head<=tail) {
            tail--;
        }
        q[++tail]=i;
        cout<<a[q[head]]<<' ';
    }
    if(n-q[head]==m) {
        head++;
    }
    while(a[n]<a[q[tail]]&&head<=tail) {
        tail--;
    }
    q[++tail]=n;
    cout<<a[q[head]];
    cout<<endl;
    memset(q,0,sizeof(q));
    q[head]=1;
    tail=1;
    head=1;
    for(int i=2; i<m; i++) {
        while(a[i]>a[q[tail]]&&head<=tail) {
            tail--;
        }
        q[++tail]=i;
    }
    for(int i=m; i<n; i++) {
        if(i-q[head]==m) {
            head++;
        }
        while(a[i]>a[q[tail]]&&head<=tail) {
            tail--;
        }
        q[++tail]=i;
        cout<<a[q[head]]<<' ';
    }
    if(n-q[head]==m) {
        head++;
    }
    while(a[n]>a[q[tail]]&&head<=tail) {
        tail--;
    }
    q[++tail]=n;
    cout<<a[q[head]];
    return 0;
}

码风奇特,大佬勿喷


by impuk @ 2020-04-17 07:22:04

我是萌新,我不是大佬,所以,


by zheysq_147 @ 2020-04-17 07:22:08

码风很好,比题解好多了


by houzhiyuan @ 2020-04-17 07:39:06

有人可以查一下错吗


by duyh1114 @ 2020-04-17 07:42:10

我是直接打了一个ST表


by Scrutiny @ 2020-04-17 07:53:38

我易易代码咋那么长


by sss7020 @ 2020-04-17 08:16:56

为什么一个单调队列这么长


by houzhiyuan @ 2020-04-17 11:02:58

因为行末的空格去掉了


|