假设您得到了一组不相交的整数间隔[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
。(其中[a,b]
是一组大于或等于a
且小于或等于的整数b
。)
索引处的间隔X
覆盖bX - aX + 1
值。我们叫这个号码cX
。
鉴于每个间隔可以是...
- 保持不变(保持为
[aX,bX]
), +
通过cX
(成为[aX,bX + cX]
)向数字线的右侧扩展,- 或
-
通过cX
(成为[aX - cX,bX]
)向行的左侧扩展,
给定所有更新间隔的并集仍然可以不相交,那么最多可以包含多少个值?
编写一个函数或程序,该函数或程序采用字符串形式[a1,b1],[a2,b2],[a3,b3],...,[aN,bN]
并计算该最大值。如果编写函数,则返回值。如果编写完整的程序,请使用stdin作为输入并将值打印到stdout(或使用最接近的替代方法)。
您可以假设所有值都在正常的有符号32位整数范围内,aX
并且小于或等于bX
所有索引X
。间隔可以是任何顺序,不一定总是增加。它们必须以上述格式作为字符串给出。该字符串可能为空,在这种情况下,答案将为0。
以字节为单位的最短提交获胜。
例
如果输入为[-3,0],[1,2],[4,9]
输出,则为22。中间间隔没有空间可以扩展,因此必须保持不变。左右间隔都可以分别扩展到[-7,0]
和[4,15]
。的联合[-7,0]
和[1,2]
和[4,15]
包含了除3.这是22个值的所有值从-7到15。
3
我们是否可以使用语言数组的本机字符串表示形式进行输入,或者是否必须正是这种格式?
—
马丁·恩德
@MartinBüttner否。您需要使用此确切格式。(我知道那是一把双刃剑,但那就是它的前进方式。)
—
卡尔文的爱好2015年
您可以在两侧扩展给定间隔吗?例如,可以
—
MtnViewMark 2015年
[5,6]
成为[3,8]
(答案为6),或者可以为正[5,8]
或[3,6]
(答案为4)?
@MtnViewMark号。它们只能从一侧延伸(或根本不能延伸)
—
卡尔文的爱好