https://pintia.cn/problem-sets/1287399212459409408/problems/1287399280939810818
#include <iostream>
#include <queue>
#include <vector>
using namespace std;
const int SIZE = 1000005;
int main() {
int arr[SIZE];
priority_queue<int, vector<int>, greater<int>> pq;
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i ++) cin >> arr[i];
int index = 0, count = 0, last;
for ( ; index < M; index ++) pq.push(arr[index]);
vector<int> now;
vector<int> v;
while (count != N) {
last = pq.top(); pq.pop();
now.push_back(last);
count ++;
if (index < N) {
if (arr[index] > last) {
pq.push(arr[index ++]);
} else {
v.push_back(arr[index ++]);
}
}
if (pq.empty()) {
for (int i = 0; i < now.size(); i ++) {
if (i != now.size() - 1) cout << now[i] << " ";
else cout << now[i] << endl;
}
now.clear();
for (int i = 0; i < v.size(); i ++) {
pq.push(v[i]);
}
v.clear();
}
}
return 0;
}