单调队列模板

来源:互联网 发布:起名网站源码 编辑:程序博客网 时间:2024/05/21 11:07

 

#include<stdio.h>struct Node{int val,index;}que[100];int main(){int ans[100];int N,K,i,head,tail,x;scanf("%d %d",&N,&K);head=tail=0;//tail指向队尾元素的下一个位置for(i=0;i<N;i++){scanf("%d",&x);if(head<tail&&que[head].index<=i-K) head++;//如果队首的元素到队尾大于或等于K个,则T掉队首元素,因为当前元素一定要加入队列。while(head<tail&&que[tail-1].val>=x)//队首存放最小值。tail--;que[tail].val=x;que[tail++].index=i;ans[i]=que[head].val;}for(i=K-1;i<N;i++)printf("%d ",ans[i]);printf("\n");return 0;}


 

原创粉丝点击