#include <iostream>
#include <stack>
#include <queue>
using namespace std;
int main() {
int n, m, k;
cin >> n >> m >> k;
queue<int> Q;
for (int i = 0; i < n; i++) {
int x;
cin >> x;
Q.push(x);
}
stack<int> box, ans, seq;
auto out = [&] () {
while (ans.size()) {
seq.push(ans.top());
ans.pop();
}
while (seq.size() != 1) {
cout << seq.top() << " ";
seq.pop();
}
cout << seq.top() << endl;
seq.pop();
};
while (Q.size() || box.size()) {
if (ans.size() == 0) {
if (box.size() == 0) {
if (Q.size() == 0) {
break;
}
ans.push(Q.front());
Q.pop();
} else {
ans.push(box.top());
box.pop();
}
} else {
while (box.size() && box.top() <= ans.top() && ans.size() < k) {
ans.push(box.top());
box.pop();
}
if (ans.size() == k || Q.size() == 0) {
out();
} else {
int t = Q.front();
if (t <= ans.top()) {
ans.push(t);
Q.pop();
} else {
if (box.size() == m) {
out();
} else {
box.push(t);
Q.pop();
}
}
}
}
}
if (ans.size())
out();
return 0;
}
PTA L2-041 插松枝
最新推荐文章于 2024-05-20 12:30:00 发布