首页 > 试题广场 >

IP段合并

[编程题]IP段合并
  • 热度指数:1475 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解
一个数字段由首尾两个数字标识,表示一个自然数集合,
比如数字段[beg, end)表示从beg到end之间的所有自然数,
包含beg,但不包含end。

有若干个数字段,这些数字段之间可能有重叠,
怎么把这些数字段合并去重,用最少个数的数字段来表示。

合并前后,整个集合包含的数字不发生变化。



输入描述:
第一行为数字N,表示接下来有N个数字段(N<=100000)
第二行开始一共有N行,每行两个数字,分别表示一个数字段的beg和end
(beg和end为无符号32位整数)


输出描述:
合并去重后形成的数字段集合,按升序排列。
示例1

输入

4 
3 8
3 7
4 6
7 9

输出

3 9
头像 Neflibata
发表于 2020-03-24 13:17:13
一个数字段由首尾两个数字标识,表示一个自然数集合,比如数字段[beg, end)表示从beg到end之间的所有自然数,包含beg,但不包含end。 有若干个数字段,这些数字段之间可能有重叠,怎么把这些数字段合并去重,用最少个数的数字段来表示。合并前后,整个集合包含的数字不发生变化。 输入描述: 展开全文