Загрузка данных


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()