#include<bits/stdc++.h> usingnamespace std; constint N = 1000010; int a[N], q[N];
intmain(){ int n, k; cin >> n >> k; for (int i = 0; i < n; i++) cin >> a[i]; //判断队头是否已经滑出窗口 int hh = 0, tt = -1; // 定义队头和队尾 for (int i = 0; i < n; i++){ // 判断队头是否滑出窗口 if (hh <= tt && i - k + 1 > q[hh]) hh++; // 每次只有1个数被移除窗口 while (hh <= tt && a[q[tt]] >= a[i]) tt--; // 如果新插入的数比队尾的数小就把队尾删除 q[++tt] = i; if (i >= k - 1) cout << a[q[hh]] << ' '; }
cout << '\n';
hh = 0, tt = -1; // 定义队头和队尾 for (int i = 0; i < n; i++){ // 判断队头是否滑出窗口 if (hh <= tt && i - k + 1 > q[hh]) hh++; // 每次只有1个数被移除窗口 while (hh <= tt && a[q[tt]] <= a[i]) tt--; q[++tt] = i; if (i >= k - 1) cout << a[q[hh]] << ' '; }