結果
問題 | No.2831 Cos Bomb Crasher |
ユーザー |
👑 |
提出日時 | 2024-08-04 12:52:12 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 392 ms / 2,000 ms |
コード長 | 1,720 bytes |
コンパイル時間 | 364 ms |
コンパイル使用メモリ | 82,432 KB |
実行使用メモリ | 97,480 KB |
平均クエリ数 | 297.00 |
最終ジャッジ日時 | 2024-08-04 12:52:37 |
合計ジャッジ時間 | 25,402 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 58 |
ソースコード
from pprint import pprint import random DEBUG = False if DEBUG: n = 10**8 x_ = random.randrange(-n, n) y_ = random.randrange(-n, n) a = (x_, y_) b = (-y_, x_) o = ((a[0] + b[0]) / 2, (a[1] + b[1]) / 2) rr = (a[0] - o[0]) ** 2 + (a[1] - o[1]) ** 2 S = "" def print(Q, flush): pprint(Q) if Q[0] == "2": pprint(f"{o[0]}, {o[1]}, {rr}") return x, y = map(float, Q.split()[1:]) assert -(10**9) <= x <= 10**9 assert -(10**9) <= y <= 10**9 d = (x - o[0]) ** 2 + (y - o[1]) ** 2 pprint(f"{rr=} {d=}") global S if d == rr: S = "0" elif d > rr: S = "+" else: S = "-" def input(): return S def judge(Q): print(Q, flush=True) if Q[0] == "2": return return input() if not DEBUG: n = int(input()) q = 74 l = 0 r = 2 * n for _ in range(q): mid = (l + r) / 2 res = judge(f"1 {mid:.9f} 0") if res[0] == "+": r = mid else: l = mid x_p = (l + r) / 2 l = -2 * n r = 0 for _ in range(q): mid = (l + r) / 2 res = judge(f"1 {mid:.9f} 0") if res[0] == "+": l = mid else: r = mid x_m = (l + r) / 2 l = 0 r = 2 * n for _ in range(q): mid = (l + r) / 2 res = judge(f"1 0 {mid:.9f}") if res[0] == "+": r = mid else: l = mid y_p = (l + r) / 2 l = -2 * n r = 0 for _ in range(q): mid = (l + r) / 2 res = judge(f"1 0 {mid:.9f}") if res[0] == "+": l = mid else: r = mid y_m = (l + r) / 2 x = (x_p + x_m) / 2 y = (y_p + y_m) / 2 r2 = x**2 + y**2 judge(f"2 {x:.9f} {y:.9f} {r2:.9f}")