103 - Circle Packing Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点: 10000

問題文

中心座標が (0, 0) である半径 1 の円に、等しい半径の円を 100 個敷き詰める方法のうち、円の半径ができるだけ大きいものを求めてください。

なお、記録は 21 世紀になってからも塗り替えられており、いまだ解決されていない難問です。

入力形式

この問題では入力が与えられません。

出力形式

i 個目の円の中心座標を (x_i, y_i) とします。100 行にわたって以下の形式で出力してください。

x_1 y_1
x_2 y_2
\vdots
x_{100} y_{100}

なお、円の中心座標がすべて決まれば、円の半径は円同士が重ならないギリギリの値に自動的に設定されるので、半径を出力する必要はありません。

出力する実数 x_i, y_i は、1.23456e-03 のような指数表記で出力せず、すべて 0.00123456 のような形式で出力してください。

得点計算

この問題では、配置する円の大きさができるだけ大きいほど高得点が得られるようになっています。

まず、以下の条件を 1 つでも満たした場合は、不正解 (WA) となります。

  • 出力形式が指定されたフォーマットに沿っていない(指数表記で出力している場合も含む)
  • いずれかの i \ (1 \leq i \leq 100) に対して、\sqrt{{x_i}^2 + {y_i}^2} \gt 1 である(円の中心座標が半径 1 の円の内部に入っていない)

それ以外の場合は正解 (AC) と判定されます。100 個の円の中心座標から計算された円の半径 R に応じて、以下のように得点が決まります。

  • 以下の 9 個の点を基準にして、R の 1 次関数的に(折れ線グラフのように)得点が増加していきます。
R 0.00 0.07 0.08 0.085 0.088 0.089 0.0895 0.0900 0.090235
得点 0 350 750 1250 1700 2000 2700 4000 8700
  • R \gt 0.090235 のとき、R10^{-9} 増えるごとに 1 点上がるペースで得点が増加していきます。
  • ただし、得点は小数点以下を四捨五入して整数に丸められます。

出力例

-0.63 -0.63
-0.63 -0.49
-0.63 -0.35
-0.63 -0.21
-0.63 -0.07
-0.63 0.07
-0.63 0.21
-0.63 0.35
-0.63 0.49
-0.63 0.63
-0.49 -0.63
-0.49 -0.49
-0.49 -0.35
-0.49 -0.21
-0.49 -0.07
-0.49 0.07
-0.49 0.21
-0.49 0.35
-0.49 0.49
-0.49 0.63
-0.35 -0.63
-0.35 -0.49
-0.35 -0.35
-0.35 -0.21
-0.35 -0.07
-0.35 0.07
-0.35 0.21
-0.35 0.35
-0.35 0.49
-0.35 0.63
-0.21 -0.63
-0.21 -0.49
-0.21 -0.35
-0.21 -0.21
-0.21 -0.07
-0.21 0.07
-0.21 0.21
-0.21 0.35
-0.21 0.49
-0.21 0.63
-0.07 -0.63
-0.07 -0.49
-0.07 -0.35
-0.07 -0.21
-0.07 -0.07
-0.07 0.07
-0.07 0.21
-0.07 0.35
-0.07 0.49
-0.07 0.63
0.07 -0.63
0.07 -0.49
0.07 -0.35
0.07 -0.21
0.07 -0.07
0.07 0.07
0.07 0.21
0.07 0.35
0.07 0.49
0.07 0.63
0.21 -0.63
0.21 -0.49
0.21 -0.35
0.21 -0.21
0.21 -0.07
0.21 0.07
0.21 0.21
0.21 0.35
0.21 0.49
0.21 0.63
0.35 -0.63
0.35 -0.49
0.35 -0.35
0.35 -0.21
0.35 -0.07
0.35 0.07
0.35 0.21
0.35 0.35
0.35 0.49
0.35 0.63
0.49 -0.63
0.49 -0.49
0.49 -0.35
0.49 -0.21
0.49 -0.07
0.49 0.07
0.49 0.21
0.49 0.35
0.49 0.49
0.49 0.63
0.63 -0.63
0.63 -0.49
0.63 -0.35
0.63 -0.21
0.63 -0.07
0.63 0.07
0.63 0.21
0.63 0.35
0.63 0.49
0.63 0.63

この出力は、以下の図のように円を配置することに相当します。

円の半径は 0.07 となるので、あなたは 350 点を獲得します。