整数の非交差区間のセットが与えられたと仮定します[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
以下であると仮定できます。間隔は任意の順序でかまいませんが、必ずしも常に増加しているわけではありません。上記の形式の文字列として指定する必要があります。文字列は空の場合があります。その場合、答えは0になります。bX
X
例
入力が[-3,0],[1,2],[4,9]
出力の場合、22になります。中央の間隔にはどちらの方法でも拡張する余地がないため、変更しないでおく必要があります。左右の間隔は[-7,0]
、[4,15]
それぞれに拡張することができます。[-7,0]
and [1,2]
とunionの結合には、[4,15]
-7から15までのすべての値が含まれます(3を除く)。22の値です。
[5,6]
になる[3,8]
(6の答えのため)、またはそれだけで可能[5,8]
か[3,6]
(4の答えのため)?