HM262 有序求并
HM262 有序求并
来源: 第 262 集 常用集合算法-set_union
难度: 普及-
时间限制: 1s
空间限制: 64MB
题目描述
set_union 求两个集合的并集:两段里出现过的值都要,重叠的值只保留一次。例如一段是 \(0\sim 9\),另一段是 \(5\sim 14\),并集是 \(0\sim 14\)。两个原容器必须已经有序,结果写入目标容器。
五个参数:第一段起止迭代器、第二段起止迭代器、目标容器起始迭代器。必须包含算法头文件。必须同时满足:
- 两个原容器都已有序。输入可能无序,先各自排成升序。
- 目标容器要提前
resize。最坏情况是两段完全不相交,并集长度等于两段长度之和,因此容量取两段size相加。有重叠时,多出来的位置保持默认 \(0\)。 - 算法返回「并集真正结束」的迭代器。遍历并集必须用这个返回值,不能用目标容器的
end(),否则会把后面补的 \(0\) 也扫出来。
先输出用返回迭代器截出来的并集;再输出从目标起始扫到 end() 的整段(含补零)。
输入格式
第一行一个整数 \(n\)。
第二行 \(n\) 个整数。当 \(n=0\) 时本行可以是空行。
第三行一个整数 \(m\)。
第四行 \(m\) 个整数。当 \(m=0\) 时本行可以是空行。
输出格式
共两行:
- 并集(用返回迭代器截断);
- 目标容器从起始到
end()的全部元素。
同一行内用单个空格分隔,行末换行。对应区间为空时该行只输出换行。
样例
输入 #1
10
0 1 2 3 4 5 6 7 8 9
10
5 6 7 8 9 10 11 12 13 14
输出 #1
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 0 0 0 0 0
输入 #2
3
1 2 3
2
8 9
输出 #2
1 2 3 8 9
1 2 3 8 9
说明
\(0 \le n,m \le 1000\),元素绝对值不超过 \(10^9\)。同一容器内元素互不相同。
样例 #1 容量按最坏情况开成 \(20\),真正并集只有 \(15\) 个,后五个是补零。样例 #2 两段不相交,容量恰好用完,两行相同。
信息
- ID
- 1261
- 难度
- (无)
- 分类
- (无)
- 标签
- (无)
- 递交数
- 0
- 已通过
- 0
- 通过率
- ?
- 上传者