結果
問題 |
No.1944 ∞
|
ユーザー |
![]() |
提出日時 | 2025-06-12 12:57:01 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,395 bytes |
コンパイル時間 | 279 ms |
コンパイル使用メモリ | 82,304 KB |
実行使用メモリ | 103,424 KB |
最終ジャッジ日時 | 2025-06-12 13:03:17 |
合計ジャッジ時間 | 3,377 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 29 WA * 7 |
ソースコード
import math def main(): import sys input = sys.stdin.read data = input().split() N = int(data[0]) X = int(data[1]) Y = int(data[2]) R = list(map(int, data[3:3+N])) if N == 1: dist_sq = X**2 + Y**2 required = R[0] ** 2 print("Yes" if dist_sq == required else "No") return sum_R = sum(R) R_sorted = sorted(R, reverse=True) M = R_sorted[0] cnt = 1 for i in range(1, N): if R_sorted[i] == M: cnt += 1 else: break if cnt < N: second_max = R_sorted[cnt] else: second_max = M dist = math.hypot(X, Y) for r_last in R: sum_rest = sum_R - r_last if r_last == M: if cnt > 1: max_rest = M else: max_rest = second_max else: max_rest = M A = max(0, 2 * max_rest - sum_rest) B = sum_rest C = abs(max_rest - r_last) D_val = max_rest + r_last lower_total = A - D_val upper_total = B + D_val point_lower = dist - r_last point_upper = dist + r_last if (upper_total >= point_lower - 1e-9) and (lower_total <= point_upper + 1e-9): print("Yes") return print("No") if __name__ == "__main__": main()