Time Limit: 3 sec / Memory Limit: 1024 MB
問題文
サイズ の立方体型の容器がある。この容器に球を詰め込むゲームを行う。
容器内の点は直交座標系によって表され、容器の頂点の座標のうち一つは であり、その頂点から最も遠い頂点の座標は である。
詰め込める球は 個あり、球 、球 、…、球 と呼ばれる。球 の半径は である。
これらから好きなだけ球を選び、それぞれ容器内の好きな整数座標に配置する (すなわち、球の中心がその整数座標となるように配置する)。
このとき、球が宙に浮いてもよいが、球が容器からはみ出たり球同士が重なったりしてはならない (球と容器、または球同士が接するのはよい)。
球の配置に対し、あなたの点数を以下の総和として計算する。
- 基礎点: 球 には基礎点 が定められており、球 を容器内に設置すると 点を得られる。
- ボーナス点: 近くに配置することが好ましい球のペアが 組与えられる。より具体的には、 つの整数の組 が 個与えられる。これらはそれぞれ、球 と球 を中心間のユークリッド距離が 以下となるように容器内に配置すると 点を得られることを表す。(距離が を超えるような配置が禁止されはしない。)
点数をできるだけ多く得られる球の配置を考えよ。最適解を求める必要はない。
制約
- 入力中の値はすべて整数である。
入力
入力は以下の形式で与えられる。
出力
配置における球 の中心座標を として、以下の形式で出力せよ。ただし、容器内に配置しない球の中心座標は とせよ。
以下の場合、Wrong Answer と判定される。
- 出力フォーマットが誤っている ( のいずれかが整数でない場合を含む)。
- 球が容器からはみ出ている。すなわち、容器内に配置した球 について、, , のいずれかが 未満であるか、, , のいずれかが より大きい。
- 球同士が重なっている。すなわち、容器内に配置した つの球 , について、球 , の中心間のユークリッド距離が より小さい。
入力生成
この項には必ずしも目を通す必要はない。
各球 のパラメータは以下のように決定される。
- 球 の半径 は、 以上 以下の整数としてランダムに決定される。
- 基礎点 は、 以上 以下の整数としてランダムに決定される。
また、 件目のボーナス点のパラメータは以下のように決定される。
- は、 以上 以下の つの整数としてランダムで決定される。ただし、等しい値が選ばれた場合は再抽選を行う。その後、 であれば と の値を入れ替える。
- は、 以上 以下の整数としてランダムに決定される。
- は、 以上 以下の整数としてランダムに決定される。
採点
単一のテストケースにおける点数は、問題文で述べたように基礎点とボーナス点の総和として算出される。
テストケースは ケース与えられ、すべてのテストケースの点数の総和がその提出の得点となる。
なお、テストケース example_01 以外で ケースでも出力が Wrong Answer と判定された場合、example_01 以外のケースの点数はすべて 点となる。
サンプルコード (C++)
このコードをそのまま提出しても構いません。