C - ドワンGo Editorial /

Time Limit: 2.525 sec / Memory Limit: 246 MB

配点:1200

問題文

スマホゲームが大好きなタカシくんは最近、大人気のスマホゲーム「ドワンGo」にはまっています。

ドワンGoは、地図上の一点に隠れるキャラクター「テレビちゃん」を捕獲していくゲームです。

テレビちゃんは地図上に一体だけ存在しており、テレビちゃんの位置(x_t, y_t)0 \leq x_t \leq L, 0 \leq y_t \leq Lを満たす整数座標であることが知られています。
タカシくんにテレビちゃんの正確な位置はわかりませんが、そのかわり、タカシくんは指定した座標にアイテム「テレボール」を投げることができます。
テレビちゃんにテレボールが当たると、タカシくんはテレビちゃんを捕獲することができます。

テレボールは非常に小さいため、テレビちゃんの位置をぴったり指定しないと、タカシくんはテレビちゃんを捕獲できません。
しかし、テレビちゃんは臆病なので、テレボールを投げた位置がテレビちゃんに近いと(つまり、テレビちゃんの位置からテレボールを投げた位置までのユークリッド距離がR以下である(Rぴったりを含む)と)、
テレビちゃんの驚く声が聞こえます。

いま、タカシくんはテレボールをN個持っています。
タカシくんはこれ以上テレボールの数を増やす課金をしたくないため、
N個のテレボールで確実にテレビちゃんを捕獲したいと考え、あなたに助けを求めてきました。
タカシくんを支援するプログラムを作成してください。


入出力形式

あなたはタカシくんにテレボールを投げる位置を実数で指示することができます。
例えば、C/C++でタカシくんにテレボールを位置(x,y)に投げてもらうよう指示するには、

printf("%.9f %.9f\n", x, y); fflush(stdout);

とします。
Lより大きい値や負数の指定も可能ですが、xyは文字列として20文字以下でなくてはなりません。また、指数表記での指定は不可能です。
これらの条件を破った場合は誤答(Wrong Answer)となります。

次に、

scanf("%s", &result);

とすると、タカシくんがテレボールを投げた結果に応じて以下のように返事を得られます。

  • テレビちゃんを捕獲した時(つまり(x_t,y_t)=(x,y)の時)、"found"が得られる
  • テレビちゃんを捕獲できなかったが、テレビちゃんが声を発した時(つまり0 < \sqrt{(x_t-x)^2+(y_t-y)^2} \leq Rの時)、"close"が得られる
  • テレビちゃんを捕獲できなかった上、テレビちゃんが声を発しなかった時(つまりR < \sqrt{(x_t-x)^2+(y_t-y)^2}の時)、"far"が得られる
  • タカシくんがN個のボールを投げ切ってしまったか、あなたが指示した座標が不正であった時、"kill"が得られる

タカシくんが"found"もしくは"kill"を返すまで、あなたはタカシくんにテレボールを投げる指示をすることができますが、
"found"もしくは"kill"の返事が得られた時は、直ちにプログラムを終了してください。

制約

  • L = 1,000,000
  • R = 100,000
  • 0 \leq x_t \leq L
  • 0 \leq y_t \leq L
  • x_t,y_tは整数
  • テレボールはN = 200回まで投げることができる。それを超えると誤答(Query Limit Exceeded)となる

部分点

以下を満たすデータセットに正解した場合は、25点が与えられる。

  • 0 \leq x_t \leq 10
  • 0 \leq y_t \leq 10

入出力例

プログラムの入力 プログラムの出力
1000001.000000000000 1000000.000000000000
far
-25252.525252525252 52525.252525252525
close
100000.000000000000 -0.000000000001
far
-100000.000000000000 0.000000000000
close
0 0
found

プログラムはタカシくんに(1000001, 1000000)の位置にテレボールを投げる指示を出し、
テレビちゃんが声を発していない(半径R = 100,000の範囲にテレビちゃんがいない)という情報を得ています。

その後何度かテレボールを投げる指示を出し、
最終的に(0, 0)にテレボールを投げる指示を出したところで、テレビちゃんを捕獲した。