atcoder#ABC256D. [ABC256D] Union of Interval

[ABC256D] Union of Interval

配点 : 400400

問題文

実数 L,RL,R に対して、LL 以上 RR 未満からなる実数の集合を [L,R)[L,R) と表します。このような形で表される集合を右半開区間といいます。

NN 個の右半開区間 [Li,Ri)[L_i,R_i) が与えられます。これらの和集合を SS とします。SS を最小の個数の右半開区間の和集合として表してください。

制約

  • 1N2×1051 \leq N \leq 2\times 10^5
  • 1Li<Ri2×1051 \leq L_i \lt R_i \leq 2\times 10^5
  • 入力に含まれる値は全て整数である

入力

入力は以下の形式で標準入力から与えられる。

NN

L1L_1 R1R_1

\vdots

LNL_N RNR_N

出力

SS が最小で kk 個の右半開区間の和集合で表せるとする。そのような kk 個の右半開区間 [Xi,Yi)[X_i,Y_i)XiX_i の昇順で以下のように kk 行出力せよ。

X1X_1 Y1Y_1

\vdots

XkX_k YkY_k

3
10 20
20 30
40 50
10 30
40 50

33 つの右半開区間 [10,20),[20,30),[40,50)[10,20),[20,30),[40,50) の和集合は 22 つの右半開区間 [10,30),[40,50)[10,30),[40,50) の和集合と等しくなります。

3
10 40
30 60
20 50
10 60

33 つの右半開区間 [10,40),[30,60),[20,50)[10,40),[30,60),[20,50) の和集合は 11 つの右半開区間 [10,60)[10,60) と等しくなります。