求助,快读为什么会让答案错误
查看原帖
求助,快读为什么会让答案错误
212349
ChengJY_楼主2021/5/15 10:03

这是我的代码,在本地上没有问题,在洛谷上就会出问题,后来把快读删了就过了,有大佬知道原因吗

#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;
}
	
2021/5/15 10:03
加载中...