这是我的代码,在本地上没有问题,在洛谷上就会出问题,后来把快读删了就过了,有大佬知道原因吗
#include<bits/stdc++.h>
using namespace std;
int n,k,a[1000005],p[1000005],q[1000005];
inline int read(){
char ch=getchar();
int x=0,w=1;
while((ch>'9' and ch<'0') and ch!='-') ch=getchar();
if(ch=='-') w=-1,ch=getchar();
while(ch>='0' and ch<='9')x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
return x*w;
}
void work_min(){
int h=1,t=0;
for(int i=1;i<=n;++i){
while(h<=t and a[p[t]]>=a[i])
t--;
p[++t]=i;
while(p[h]<=i-k)
h++;
if(i>=k)
printf("%d ",a[p[h]]);
}
printf("\n");
}
void work_max(){
int h=1,t=0;
for(int i=1;i<=n;++i){
while(h<=t and a[q[t]]<=a[i])
t--;
q[++t]=i;
while(q[h]<=i-k)
h++;
if(i>=k)
printf("%d ",a[q[h]]);
}
printf("\n");
}
int main(){
n=read();k=read();
for(int i=1;i<=n;++i)
a[i]=read();
work_min();
work_max();
return 0;
}