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

тема: Кластеризация: 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 →

Куда дальше