IT
Редактор
1
Нажмите "Выполнить", чтобы запустить код.
Введите данные:
НовостьИнформатика ЕГЭ - 11 класс 06.03.2026 10:52

Задание 27. ЕГЭ (ИНФ)

from math import dist as d
def get_centroid(c):
    return min(c, key=lambda p: sum(d(p, t) for t in c))
C_A = [[], []]
for line in open('27_A_апробация.txt'):
    x, y = map(float, line.replace(',', '.').split())
    if 3 <= x <= 9 and 5 <= y <= 11: C_A[0].append((x, y))
    elif 6 <= x <= 12 and 15 <= y <= 25: C_A[1].append((x, y))
S_A = sorted([(len(c), get_centroid(c), c) for c in C_A])
A1, _,_= S_A[0]
A2 = sum(d(item[1], (-1.0, 1.3)) for item in S_A)
print(A1, int(A2 * 10000))

C_B = [[], [], []]
for line in open('27_B_апробация.txt'):
    x, y = map(float, line.replace(',', '.').split())
    if 15 <= x <= 25 and 10 <= y <= 20: C_B[0].append((x, y))
    elif 25 <= x <= 30 and 10 <= y <= 20: C_B[1].append((x, y))
    elif 15 <= x <= 20 and 25 <= y <= 35: C_B[2].append((x, y))
S_B = sorted([(len(c), get_centroid(c), c) for c in C_B])
n_mid, center_mid, points_mid = S_B[1]
n_max, center_max, points_max = S_B[-1]
B1 = sum(1 for p in points_mid if 0 < d(p, center_mid) <= 1.6)
B2 = max(d(p, center_max) for p in points_max)
print(B1, int(B2 * 10000))