求关注
2024-09-01 11:05:57
发布于:重庆
2阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int maxn=1e6+10;
int a[maxn];
int a1[maxn];
int a2[maxn];
deque<int>q1;
deque<int>q2;
int main(){
int n,k;
scanf("%d%d",&n,&k);
for(int i=1;i<=n;i++) scanf("%d",&a[i]);
for(int i=1;i<=n;i++){
while(!q1.empty() && a[q1.back()]>a[i]) q1.pop_back();
while(!q2.empty() && a[q2.back()]<a[i]) q2.pop_back();
q1.push_back(i);
q2.push_back(i);
if(i>=k){
while(q1.front()<i-k+1) q1.pop_front();
a1[i]=a[q1.front()];
while(q2.front()<i-k+1) q2.pop_front();
a2[i]=a[q2.front()];
}
}
for(int i=k;i<=n;i++) printf("%d ",a1[i]);
printf("\n");
for(int i=k;i<=n;i++) printf("%d ",a2[i]);
return 0;
}
这里空空如也
有帮助,赞一个