社区讨论
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 条回复,欢迎继续交流。
正在加载回复...