单调队列

加了读入挂比不加更慢。。。。

而且这份代码要交c++

有大神G++跑了700ms。。。。。

orzorzorz

#include<iostream>
#include<cstdio>
using namespace std;
int a[1000086];
int num[1000086];
int fi,la;
int main()
{
    int n,m;
    scanf("%d%d",&n,&m);
    for(int i=1;i<=n;i++){
        scanf("%d",&a[i]);
    }
    fi=la=0;
    for(int i=1;i<=n;i++){
        while(fi<la&&a[num[la-1]]>a[i]){
            la--;
        }
        num[la++]=i;
        if(num[fi]<i-m+1){fi++;}
        if(i>=m){
            printf("%d ",a[num[fi]]);
        }
    }printf("\n");
    fi=la=0;
    for(int i=1;i<=n;i++){
        while(fi<la&&a[num[la-1]]<a[i]){
            la--;
        }
        num[la++]=i;
        if(num[fi]<i-m+1){fi++;}
        if(i>=m){
            printf("%d ",a[num[fi]]);
        }
    }printf("\n");
}

  

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-10-20
  • 2021-08-19
  • 2021-12-07
  • 2021-10-27
  • 2022-02-08
猜你喜欢
  • 2022-02-09
  • 2021-10-09
  • 2021-12-11
  • 2022-12-23
  • 2021-12-19
  • 2021-05-22
  • 2021-12-24
相关资源
相似解决方案