题目描述
三条升序序列(后一个数不小于前一个数),每条至多 个非负整数(数值可达 ,用 long long),请把它们合并成一条升序序列输出。
三路归并的经典做法:把每条序列的队首都放进一个小根堆——为了知道弹出的数来自哪条序列,把「值」和「队号」编进同一个数:值乘 加上队号(、、)。每次弹出全局最小的,再把它所在序列的下一个补进堆。
输入格式
第一行三个整数 、、()。
第二、三、四行分别是三条序列,各含 、、 个整数,均升序,数值 满足 。
输出格式
一行 个整数:合并后的升序序列,用空格分隔。
样例
输入:
3 3 3
1 4 7
2 5 8
3 6 9
输出:
1 2 3 4 5 6 7 8 9
三个队首 1、2、3 里 1 先出,接着 4、2、3 里 2 出……三路轮流出,全程有序。
数据范围
,。提示:归并要「每一小步都全局比」——先把一条整条倒完再比剩下两条,遇到三条交织的序列必错。