单调队列
加了读入挂比不加更慢。。。。
而且这份代码要交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(" "); 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(" "); }