poj 2823:Sliding Window

来源:互联网 发布:中国最后一个太监知乎 编辑:程序博客网 时间:2024/06/07 22:56

解题思路:

单调队列

参考:http://blog.csdn.net/heart_dash/article/details/7786258

#include<iostream>using namespace std;int a[1000010];int queue[1000010];int n,m;void min_que(){int head = 1;int tail = 0;for(int i=1;i<=m;i++){while(head<=tail && a[queue[tail]]>a[i])tail--;tail++;queue[tail] = i;}for(int i=m;i<=n;i++){while(head<=tail && a[queue[tail]]>a[i])tail--;tail++;queue[tail] = i;while(queue[head]<i-m+1) head++;cout<<a[queue[head]]<<" ";}cout<<endl;return;}void max_que(){int head = 1;int tail = 0;for(int i=1;i<=m;i++){while(head<=tail && a[queue[tail]]<a[i])tail--;tail++;queue[tail] = i;}for(int i=m;i<=n;i++){while(head<=tail && a[queue[tail]]<a[i])tail--;tail++;queue[tail] = i;while(queue[head]<i-m+1) head++;cout<<a[queue[head]]<<" ";}cout<<endl;return;}int main(){cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];min_que();max_que();return 0;}


0 0
原创粉丝点击