求助!
  • 板块P2032 扫描
  • 楼主Usada_Pekora
  • 当前回复5
  • 已保存回复5
  • 发布时间2021/3/30 18:42
  • 上次更新2023/11/5 01:21:52
查看原帖
求助!
434929
Usada_Pekora楼主2021/3/30 18:42

为什么代码里两句话写反会错(有注释的两句,一换过来就对了

#include<bits/stdc++.h>
const int N=2e6+5;
using namespace std;
	inline int  read(){
	int  x=0,f=1;
	char ch=getchar();
	while(ch<'0'||ch>'9'){
		if(ch=='-')f=-1;
		ch=getchar();
	}
	while(ch>='0'&&ch<='9'){
		x=(x<<1)+(x<<3)+(ch^48);
		ch=getchar();
	}
	return x*f;
}
int n,m,a[N],q[N],h=1,t=0;
int main(){
	n=read(),m=read();
	for(int i=1;i<=n;i++)a[i]=read();
	for(int i=1;i<=n;i++){
		while(h<=t&&q[h]<=i-m)h++;
        while(h<=t&&a[i]>=a[q[t]])t--;
        if(i>=m)printf("%d\n",a[q[h]]);//1
        q[++t]=i;//2
	}
	return 0;
}
2021/3/30 18:42
加载中...