问题1472--有序表的最小和

1472: 有序表的最小和

时间限制: 1 Sec  内存限制: 256 MB
提交: 12  解决: 3
[提交] [状态] [讨论版] [命题人:]

题目描述

给出两个长度为 n 的有序表 A 和 B,在 A 和 B 中各任取一个元素,可以得到 n 2 个和,求这些和中最小的 n 个。

输入

第 1 行包含 1 个整数正 n(n≤400000)。
第 2 行与第 3 行分别有 n 个整数,各代表有序表 A 和 B。一行中的每两个整数之间用一个空格隔开,大小在长整型范围内,数据保证有序表单调递增。

输出

输出共 n 行,每行一个整数,第 i 行为第 i 小的和。
数据保证在 long long 范围内。

样例输入 Copy

3
1 2 5
2 4 7

样例输出 Copy

3
4
5

提示

可以把这些和看成 n 个有序表:

然后用堆来维护,堆中始终保持n个元素,每次取出堆中最小的元素,把如上对应的有序表中后一个元素加入堆。一共输出n个元素,时间复杂度为O(nlog2n),空间复杂度为O(n)。

来源/分类