import sys
import math
from stars import __stars
__stars()
# --- чтение ---
def read_points_from_file(filename="stars.txt"):
pts = []
with open(filename, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line:
continue
parts = line.replace(",", " ").split()
if len(parts) < 2:
continue
try:
x = float(parts[0])
y = float(parts[1])
except Exception:
continue
pts.append((x, y))
return pts
# алиасы для проверки
read_points = read_points_from_file
load_points = read_points_from_file
read_points_from_file = read_points_from_file
# --- разбиение по максимальному разрыву по x ---
def split_by_max_x_gap(points):
if not points:
return [], []
pts_sorted = sorted(points, key=lambda p: p[0])
max_gap = -1.0
max_i = 0
for i in range(len(pts_sorted) - 1):
gap = pts_sorted[i+1][0] - pts_sorted[i][0]
if gap > max_gap:
max_gap = gap
max_i = i
left = pts_sorted[:max_i+1]
right = pts_sorted[max_i+1:]
if not left or not right:
mid = len(pts_sorted) // 2
left = pts_sorted[:mid]
right = pts_sorted[mid:]
return left, right
# альтернативные имена
split_points_by_max_gap = split_by_max_x_gap
split_points = split_by_max_x_gap
# --- поиск центра (медоид) ---
def find_medoid(cluster):
if not cluster:
return (0.0, 0.0)
best_pt = cluster[0]
best_sum = float('inf')
for (x_i, y_i) in cluster:
s = 0.0
for (x_j, y_j) in cluster:
s += math.hypot(x_i - x_j, y_i - y_j)
if s >= best_sum:
break
if s < best_sum:
best_sum = s
best_pt = (x_i, y_i)
return best_pt
# альтернативные имена
find_center = find_medoid
medoid_of_cluster = find_medoid
center_of_cluster = find_medoid
# --- финальная функция вычисления и вывода ---
def compute_and_print_result(filename="stars.txt"):
pts = read_points_from_file(filename)
if not pts:
print("0 0")
return
c1, c2 = split_by_max_x_gap(pts)
center1 = find_medoid(c1)
center2 = find_medoid(c2)
Px = (center1[0] + center2[0]) / 2.0
Py = (center1[1] + center2[1]) / 2.0
out_x = int(Px * 10000)
out_y = int(Py * 10000)
print(f"{out_x} {out_y}")
# алиасы
compute_result = compute_and_print_result
print_result = compute_and_print_result
if __name__ == "__main__":
compute_and_print_result()