Даны два входных файла (файл А и файл Б).
В файле А хранятся данные о звёздах двух кластеров. В каждой строке записана информация о расположении на карте одной звезды: сначала координата x, затем координата y (в условных единицах). Известно, что количество звёзд не превышает 1000. В файле Б хранятся данные о звёздах трёх кластеров. Известно, что количество звёзд не превышает 10 000. Структура хранения информации о звездах в файле Б аналогична файлу A. Возможные данные одного из файлов иллюстрированы графиком.
Для файла А определите координаты центра каждого кластера, затем вычислить два числа: Px — минимальное из абсцисс центров кластеров, и Py — минимальное из ординат центров кластеров.
Для файла Б определите координаты центра каждого кластера, затем вычислите два числа: Q1 — расстояние между центрами кластеров с минимальным и максимальным количеством точек, и Q2 — максимальное расстояние от центра кластера с минимальным количеством точек до любой точки кластера с максимальным количеством точек.
Гарантируется, что во всех кластерах количество точек различно.
Ответ:
Приведём решение на языке Python для файла А.
f = open('demo_2025_27_А.txt')
f.readline()
ans = []
min_summ = 10**10
stars = [list(map(float, s.replace(',','.').split())) for s in f]
for i in range (len(stars) - 1):
for j in range(i+1, len (stars) - 1):
center1 = stars[i]
center2 = stars[j]
summ = 0
for star in stars:
d1 = ((star[0] - center1[0]) ** 2 + (star[1] - center1[1]) ** 2)**0.5
d2 = ((star[0] - center2[0]) ** 2 + (star[1] - center2[1]) ** 2)**0.5
summ += min(d1, d2)
if summ < min_summ:
min_summ = summ
ans = [center1, center2]
print(min(ans[0][0],ans[1][0]) * 10000, min(ans[0][1] , ans[1][1]) * 10000)
Ответ:
-5307 13171
37522 51277

