AC了,求关注
2024-06-30 10:42:32
发布于:浙江
14阅读
0回复
0点赞
#include<bits/stdc++.h>
using namespace std;
const int N=1000001;
int p[N],q[N],a[N];
int n,m;
void MAX(){
int h=0,t=-1;
for(int i=1;i<=n;i++){
if(h<=t&&p[h]<=i-m)h++;//删除已经被输出的队头元素,处于“窗外”
while(h<=t&&a[i]>a[p[t]])t--;//输出队列中肯定不会是结果的值(特点1)
p[++t]=i;//向队尾存入窗口为元素下标(特点2)
if(i>=m)cout<<a[p[h]]<<" ";//(特点2)
}
}
void MIN(){
int h=0,t=-1;
for(int i=1;i<=n;i++){
if(h<=t&&q[h]<=i-m)h++;
while(h<=t&&a[i]<a[q[t]])t--;
q[++t]=i;
if(i>=m)cout<<a[q[h]]<<" ";
}
cout<<endl;
}
int main(){
cin>>n>>m;
for(int i=1;i<=n;i++)cin>>a[i];
MIN();
MAX();
return 0;
}
全部评论 1
桂头别抄了
2024-07-17 来自 广东
0不抄了错了qwq
2024-07-17 来自 浙江
0
有帮助,赞一个