Обновление центров тренировок
Условие
В дневнике бегуна каждая тренировка описывается двумя признаками: длительностью в минутах и средним пульсом. Несколько тренировок могут не содержать один или оба этих признака.
Даны начальные центры групп тренировок. Требуется выполнить ровно одну итерацию метода k-means: распределить все полностью заполненные тренировки по ближайшим центрам, затем пересчитать координаты центров. Тренировки с пропуском хотя бы одного признака при распределении и пересчёте не используются.
Для тренировки с координатами $(x, y)$ и центра с координатами $(a, b)$ используется квадрат евклидова расстояния: $d^2=(x-a)^2+(y-b)^2$. Тренировка относится к центру с наименьшим значением $d^2$. Новая координата центра равна среднему арифметическому соответствующих координат всех тренировок, отнесённых к этому центру.
Если расстояния до нескольких центров равны, тренировка относится к центру с меньшим номером во входных данных. Гарантируется, что после распределения у каждого центра есть хотя бы одна тренировка. Каждую координату нового центра нужно округлить до ближайшей сотой, а при точной середине округлить вверх.
Формат ввода
В первой строке записаны два целых числа $n$ и $k$ — число строк дневника и число начальных центров.
В следующих $k$ строках записаны по два целых числа: длительность и пульс начального центра. Центры пронумерованы от 1 до $k$ в порядке этих строк.
В следующих $n$ строках записаны по два значения: длительность тренировки и её средний пульс. Вместо любого из значений может стоять символ -, обозначающий пропуск.
Формат вывода
Выведите $k$ строк в порядке начальных центров. В каждой строке выведите две координаты нового центра: длительность и пульс.
Каждую координату выводите ровно с двумя знаками после точки.
Ограничения
$1 \le n \le 2000$.
$1 \le k \le 20$.
$k \le n$.
Длительность начального центра и заполненной тренировки — целое число от 1 до 600.
Пульс начального центра и заполненной тренировки — целое число от 40 до 240.
Каждое поле во входных строках имеет длину от 1 до 3 символов, кроме символа -, имеющего длину 1.
Каждая строка тренировки содержит ровно два поля.
Полностью заполненных тренировок не меньше $k$, и после распределения по описанному правилу ни одна группа не остаётся пустой.
Решить задачу с автопроверкой на Python →
Куда дальше
- Школьный этап ВсОШ по информатике — как устроен первый этап и план подготовки за четыре недели
- На программиста по олимпиаде: путь по классам — что даёт диплом, куда с ним берут на ИТ-направления и почему решает 9 класс
- Вердикты судьи: WA, TLE, RE, PE, CE — что значит каждый код проверяющей системы и где искать причину