单调队列

来源:互联网 发布:鱼眼校正算法 opencv 编辑:程序博客网 时间:2024/05/18 01:55
// by BNU_LZM#include<cstdio>#include<cmath>#include<string>#include<sstream>#include<cstring>#include<iostream>#include<algorithm>using namespace std;const int maxn = 1010;struct node{int p, v;}q[maxn];int n, k, f, r, a[maxn];void init(){freopen("practicein.txt","r",stdin);//freopen("practiceout.txt","w",stdout);}void readdata(){scanf("%d%d", &n, &k);for(int i = 1; i <= n; i++) scanf("%d", &a[i]);}void inq(int i){while(q[r-1].v >= a[i] && r > f) r--;q[r++].v = a[i];q[r-1].p = i;}void work(){f = 1, r = 2;q[1].v = a[1]; q[1].p = 1;for(int i = 2; i <= k; i++){inq(i);}printf("%d", q[f].v);for(int i = k+1; i <= n; i++){inq(i);while(i-q[f].p >= k) f++;printf(" %d", q[f].v);}}int main(){init();readdata();work();return 0;}

0 0
原创粉丝点击