#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
#include <set>
using namespace std;
struct Node {
int sum;
int i; // 在数组a中的索引
int j; // 在数组b中的索引
Node(int s, int idx_i, int idx_j) : sum(s), i(idx_i), j(idx_j) {}
bool operator<(const Node& other) const {
return sum < other.sum; // 最大堆需要重载<
}
};
int main() {
int n, k;
cin >> n >> k;
vector<int> a(n), b(n);
for (int i = 0; i < n; i++) {
cin >> a[i];
}
for (int i = 0; i < n; i++) {
cin >> b[i];
}
// 由于数组是升序的,最大的和肯定是两个数组末尾元素的组合
// 使用最大堆,每次取出当前最大的和
priority_queue<Node> pq;
// 使用set来避免重复访问
set<pair<int, int>> visited;
// 初始把最大的组合加入堆中
int i = n - 1, j = n - 1;
pq.push(Node(a[i] + b[j], i, j));
visited.insert({i, j});
vector<int> result;
while (k > 0 && !pq.empty()) {
Node current = pq.top();
pq.pop();
result.push_back(current.sum);
k--;
if (k == 0) break;
// 将可能的候选组合加入堆中
// 候选1: (i-1, j)
if (current.i > 0) {
int new_i = current.i - 1;
int new_j = current.j;
if (visited.find({new_i, new_j}) == visited.end()) {
pq.push(Node(a[new_i] + b[new_j], new_i, new_j));
visited.insert({new_i, new_j});
}
}
// 候选2: (i, j-1)
if (current.j > 0) {
int new_i = current.i;
int new_j = current.j - 1;
if (visited.find({new_i, new_j}) == visited.end()) {
pq.push(Node(a[new_i] + b[new_j], new_i, new_j));
visited.insert({new_i, new_j});
}
}
}
// 输出结果
for (int i = 0; i < result.size(); i++) {
cout << result[i];
if (i != result.size() - 1) {
cout << " ";
}
}
cout << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8cXVldWU+CiNpbmNsdWRlIDxhbGdvcml0aG0+CiNpbmNsdWRlIDxzZXQ+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7CgpzdHJ1Y3QgTm9kZSB7CiAgICBpbnQgc3VtOwogICAgaW50IGk7ICAvLyDlnKjmlbDnu4Rh5Lit55qE57Si5byVCiAgICBpbnQgajsgIC8vIOWcqOaVsOe7hGLkuK3nmoTntKLlvJUKICAgIAogICAgTm9kZShpbnQgcywgaW50IGlkeF9pLCBpbnQgaWR4X2opIDogc3VtKHMpLCBpKGlkeF9pKSwgaihpZHhfaikge30KICAgIAogICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgTm9kZSYgb3RoZXIpIGNvbnN0IHsKICAgICAgICByZXR1cm4gc3VtIDwgb3RoZXIuc3VtOyAgLy8g5pyA5aSn5aCG6ZyA6KaB6YeN6L29PAogICAgfQp9OwoKaW50IG1haW4oKSB7CiAgICBpbnQgbiwgazsKICAgIGNpbiA+PiBuID4+IGs7CiAgICAKICAgIHZlY3RvcjxpbnQ+IGEobiksIGIobik7CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgIGNpbiA+PiBhW2ldOwogICAgfQogICAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspIHsKICAgICAgICBjaW4gPj4gYltpXTsKICAgIH0KICAgIAogICAgLy8g55Sx5LqO5pWw57uE5piv5Y2H5bqP55qE77yM5pyA5aSn55qE5ZKM6IKv5a6a5piv5Lik5Liq5pWw57uE5pyr5bC+5YWD57Sg55qE57uE5ZCICiAgICAvLyDkvb/nlKjmnIDlpKfloIbvvIzmr4/mrKHlj5blh7rlvZPliY3mnIDlpKfnmoTlkowKICAgIHByaW9yaXR5X3F1ZXVlPE5vZGU+IHBxOwogICAgCiAgICAvLyDkvb/nlKhzZXTmnaXpgb/lhY3ph43lpI3orr/pl64KICAgIHNldDxwYWlyPGludCwgaW50Pj4gdmlzaXRlZDsKICAgIAogICAgLy8g5Yid5aeL5oqK5pyA5aSn55qE57uE5ZCI5Yqg5YWl5aCG5LitCiAgICBpbnQgaSA9IG4gLSAxLCBqID0gbiAtIDE7CiAgICBwcS5wdXNoKE5vZGUoYVtpXSArIGJbal0sIGksIGopKTsKICAgIHZpc2l0ZWQuaW5zZXJ0KHtpLCBqfSk7CiAgICAKICAgIHZlY3RvcjxpbnQ+IHJlc3VsdDsKICAgIAogICAgd2hpbGUgKGsgPiAwICYmICFwcS5lbXB0eSgpKSB7CiAgICAgICAgTm9kZSBjdXJyZW50ID0gcHEudG9wKCk7CiAgICAgICAgcHEucG9wKCk7CiAgICAgICAgCiAgICAgICAgcmVzdWx0LnB1c2hfYmFjayhjdXJyZW50LnN1bSk7CiAgICAgICAgay0tOwogICAgICAgIAogICAgICAgIGlmIChrID09IDApIGJyZWFrOwogICAgICAgIAogICAgICAgIC8vIOWwhuWPr+iDveeahOWAmemAiee7hOWQiOWKoOWFpeWghuS4rQogICAgICAgIC8vIOWAmemAiTE6IChpLTEsIGopCiAgICAgICAgaWYgKGN1cnJlbnQuaSA+IDApIHsKICAgICAgICAgICAgaW50IG5ld19pID0gY3VycmVudC5pIC0gMTsKICAgICAgICAgICAgaW50IG5ld19qID0gY3VycmVudC5qOwogICAgICAgICAgICBpZiAodmlzaXRlZC5maW5kKHtuZXdfaSwgbmV3X2p9KSA9PSB2aXNpdGVkLmVuZCgpKSB7CiAgICAgICAgICAgICAgICBwcS5wdXNoKE5vZGUoYVtuZXdfaV0gKyBiW25ld19qXSwgbmV3X2ksIG5ld19qKSk7CiAgICAgICAgICAgICAgICB2aXNpdGVkLmluc2VydCh7bmV3X2ksIG5ld19qfSk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgCiAgICAgICAgLy8g5YCZ6YCJMjogKGksIGotMSkKICAgICAgICBpZiAoY3VycmVudC5qID4gMCkgewogICAgICAgICAgICBpbnQgbmV3X2kgPSBjdXJyZW50Lmk7CiAgICAgICAgICAgIGludCBuZXdfaiA9IGN1cnJlbnQuaiAtIDE7CiAgICAgICAgICAgIGlmICh2aXNpdGVkLmZpbmQoe25ld19pLCBuZXdfan0pID09IHZpc2l0ZWQuZW5kKCkpIHsKICAgICAgICAgICAgICAgIHBxLnB1c2goTm9kZShhW25ld19pXSArIGJbbmV3X2pdLCBuZXdfaSwgbmV3X2opKTsKICAgICAgICAgICAgICAgIHZpc2l0ZWQuaW5zZXJ0KHtuZXdfaSwgbmV3X2p9KTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgIH0KICAgIAogICAgLy8g6L6T5Ye657uT5p6cCiAgICBmb3IgKGludCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7IGkrKykgewogICAgICAgIGNvdXQgPDwgcmVzdWx0W2ldOwogICAgICAgIGlmIChpICE9IHJlc3VsdC5zaXplKCkgLSAxKSB7CiAgICAgICAgICAgIGNvdXQgPDwgIiAiOwogICAgICAgIH0KICAgIH0KICAgIGNvdXQgPDwgZW5kbDsKICAgIAogICAgcmV0dXJuIDA7Cn0=