python
2026-05-16 21:21:51
发布于:江苏
0阅读
0回复
0点赞
x1, y1, x2, y2 = map(int, input().split())
n = int(input())
missiles = []
max_d2 = 0
for _ in range(n):
x, y = map(int, input().split())
d1 = (x - x1) ** 2 + (y - y1) ** 2
d2 = (x - x2) ** 2 + (y - y2) ** 2
missiles.append((d1, d2))
# 按 d1 从小到大排序
missiles.sort(key=lambda p: p[0])
# 预处理:从后往前记录后缀最大 d2
suffix_max_d2 = [0] * (n + 1)
for i in range(n - 1, -1, -1):
suffix_max_d2[i] = max(missiles[i][1], suffix_max_d2[i + 1])
# 枚举系统1覆盖前 i 个导弹
ans = float('inf')
for i in range(n + 1):
r1_sq = missiles[i - 1][0] if i > 0 else 0 # 前 i 个的最大 d1
r2_sq = suffix_max_d2[i] # 剩余导弹的最大 d2
ans = min(ans, r1_sq + r2_sq)
print(ans)
这里空空如也

有帮助,赞一个