Распределение посылок по центрам

тема: Кластеризация: k-means · уровень: базовый

Условие

В пункте выдачи для каждой посылки известны её масса в граммах и объём в кубических сантиметрах. Также заданы характеристики нескольких центров кластеров посылок.

Каждая посылка относится к ближайшему центру. Для посылки с характеристиками $(m, v)$ и центра с характеристиками $(M, V)$ используется квадрат евклидова расстояния: $d^2=(m-M)^2+(v-V)^2$.

Требуется определить число посылок в каждом кластере. Номера центров определяются их порядком во входных данных, начиная с 1. Если расстояние до нескольких центров одинаково, посылка относится к центру с меньшим номером.

Идентификаторы посылок могут иметь пропуски и не влияют на распределение. Все характеристики посылок и центров указаны полностью. Пустой кластер имеет размер 0.

Формат ввода

В первой строке даны два целых числа $n$ и $k$ — число посылок и число центров кластеров.

В следующих $k$ строках даны по два целых числа $M_i$ и $V_i$ — масса и объём $i$-го центра.

В следующих $n$ строках даны по три целых числа id, $m$ и $v$ — идентификатор, масса и объём очередной посылки.

Формат вывода

Выведите $k$ целых чисел через пробел — размеры кластеров в порядке центров из входных данных.

Дробной части в ответе нет, выводятся точные целые числа без округления.

Ограничения

$1 \le n \le 1000$.

$1 \le k \le 20$, $k \le n$.

$1 \le id \le 10^9$.

$0 \le m, M_i \le 10000$.

$0 \le v, V_i \le 10000$.

Длина каждой строки входных данных не превышает 40 символов.

Решить задачу с автопроверкой на Python →

Куда дальше