社区讨论

90分求助,第三个点WA

P1886【模板】单调队列 / 滑动窗口参与者 4已保存回复 5

讨论操作

快速查看讨论及其快照的属性,并进行相关操作。

当前回复
5 条
当前快照
1 份
快照标识符
@lo7pa177
此快照首次捕获于
2023/10/27 05:32
2 年前
此快照最后确认于
2023/10/27 05:32
2 年前
查看原帖
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m,i,a[1001000],ans1[1001000],ans2[1001000],t2,h1,h2,t1,t3,q1[1001000],q2[1001000];
int main(){
	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++) scanf("%d",&a[i]);
	h1=t1=h2=t2=1;
	q1[1]=q2[1]=1;
	if (m==1) ans1[1]=ans2[2]=a[1];
	for (i=2;i<=n;i++){
		while (h1<=t1&&a[i]<=a[q1[t1]]) --t1;
		q1[++t1]=i;
		while (h2<=t2&&a[i]>=a[q2[t2]]) --t2;
		q2[++t2]=i;
		while (h1<=t1&&q1[h1]+m<=i) ++h1;
		while (h2<=t2&&q2[h2]+m<=i) ++h2;
		ans1[i]=a[q1[h1]],ans2[i]=a[q2[h2]];
	}
	for (i=m;i<=n;i++) printf("%d ",ans1[i]);puts("");
	for (i=m;i<=n;i++) printf("%d ",ans2[i]);

}

回复

5 条回复,欢迎继续交流。

正在加载回复...