提交时间:2024-08-21 13:50:34
运行 ID: 180465
#include <bits/stdc++.h> using namespace std; struct node { int index; int v; }; int a[2000005]; node q[2000005]; int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) cin >> a[i]; int fon = 1, bak = 1; for (int i = 1; i <= n; i++) { if (fon >= bak) cout << 0 << endl; else { if (q[fon].index + m < i) ++fon; cout << q[fon].v << endl; } while (fon < bak && q[bak - 1].v >= a[i]) --bak; q[bak].v = a[i]; q[bak++].index = i; } return 0; }