atcoder#ABC259D. [ABC259D] Circumferences

[ABC259D] Circumferences

配点 : 400400

問題文

xyxy -平面上の NN 個の円が与えられます。 i=1,2,,Ni = 1, 2, \ldots, N について、ii 番目の円は点 (xi,yi)(x_i, y_i) を中心とする半径 rir_i の円です。

NN 個の円のうち少なくとも 11 つ以上の円の円周上にある点のみを通って、点 (sx,sy)(s_x, s_y) から点 (tx,ty)(t_x, t_y) に行くことができるかどうかを判定してください。

制約

  • 1N30001 \leq N \leq 3000
  • 109xi,yi109-10^9 \leq x_i, y_i \leq 10^9
  • 1ri1091 \leq r_i \leq 10^9
  • (sx,sy)(s_x, s_y)NN 個の円のうち少なくとも 11 つ以上の円の円周上にある
  • (tx,ty)(t_x, t_y)NN 個の円のうち少なくとも 11 つ以上の円の円周上にある
  • 入力はすべて整数

入力

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

NN

sxs_x sys_y txt_x tyt_y

x1x_1 y1y_1 r1r_1

x2x_2 y2y_2 r2r_2

\vdots

xNx_N yNy_N rNr_N

出力

(sx,sy)(s_x, s_y) から点 (tx,ty)(t_x, t_y) に行くことができる場合は Yes を、そうでない場合は No を出力せよ。 ジャッジは英小文字と英大文字を厳密に区別することに注意せよ。

4
0 -2 3 3
0 0 2
2 0 2
2 3 1
-3 3 3
Yes

例えば、下記の経路で点 (0,2)(0, -2) から点 (3,3)(3, 3) へ行くことができます。

  • (0,2)(0, -2) から 11 つ目の円の円周上を反時計回りに通って点 (1,3)(1, -\sqrt{3}) へ行く。
  • (1,3)(1, -\sqrt{3}) から 22 つ目の円の円周上を時計回りに通って点 (2,2)(2, 2) へ行く。
  • (2,2)(2, 2) から 33 つ目の円の円周上を反時計回りに通って点 (3,3)(3, 3) へ行く。

よって、Yes を出力します。

3
0 1 0 3
0 0 1
0 0 2
0 0 3
No

少なくとも 11 つ以上の円の円周上にある点のみを通って点 (0,1)(0, 1) から点 (0,3)(0, 3) に行くことはできないので No を出力します。