2023-8-23 滑动窗口
题目链接:滑动窗口
#include <iostream>using namespace std;const int N = 1000010;int n, k;
int a[N], q[N];int main()
{scanf("%d%d", &n, &k);for(int i = 0; i < n; i++) scanf("%d", &a[i]);int hh = 0, tt = -1;for(int i = 0; i < n; i ++){// 队头出队条件if(hh <= tt && i - k + 1 > q[hh]) hh++;// 队尾出队条件while(hh <= tt && a[q[tt]] >= a[i]) tt--;q[++tt] = i;if(i >= k - 1) printf("%d ", a[q[hh]]);}puts("");hh = 0, tt = -1;for(int i = 0; i < n; i ++){// 队头出队条件if(hh <= tt && i - k + 1 > q[hh]) hh++;// 队尾出队条件while(hh <= tt && a[q[tt]] <= a[i]) tt--;q[++tt] = i;if(i >= k - 1) printf("%d ", a[q[hh]]);}return 0;
}