Кластеры выдач по профилям читателей

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

Условие

Библиотека анализирует историю выдач книг. Каждая запись выдачи описывается двумя числами: количеством дней, на которое была выдана книга, и числом продлений этой выдачи.

Для анализа заранее заданы эталонные профили выдач. Каждая полная запись относится к ближайшему профилю. Неполные записи, в которых хотя бы одно значение равно NA, не относятся ни к одному профилю и не учитываются в размерах кластеров.

Для записи с параметрами (x, y) и профиля с параметрами (a, b) используется квадрат евклидова расстояния: d² = (x - a)² + (y - b)². Запись относится к профилю с наименьшим значением .

В конце входных данных перечислены номера профилей, образующие запрос. Для каждого номера из запроса требуется вывести число полных записей, отнесённых к этому профилю. Если минимальное расстояние одинаково для нескольких профилей, запись относится к профилю с меньшим номером. Пустой кластер имеет размер 0. Все выводимые значения являются целыми числами, округление не применяется.

Формат ввода

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

В следующих n строках заданы два значения x и y: срок выдачи в днях и число продлений. Вместо каждого из значений может стоять строка NA.

В следующих k строках заданы по два целых числа a и b — параметры профилей. Профили нумеруются от 1 до k в порядке их появления во входных данных.

В последних q строках задано по одному целому числу — номер профиля из запроса.

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

Выведите q строк. В строке с номером i выведите размер кластера профиля, указанного в строке запроса с номером i.

Ограничения

1 ≤ n ≤ 1000.

1 ≤ k ≤ 1000.

1 ≤ q ≤ 1000.

Каждое полное значение срока выдачи, параметра профиля по сроку выдачи находится в диапазоне от 0 до 365.

Каждое полное значение числа продлений, параметра профиля по числу продлений находится в диапазоне от 0 до 20.

Каждое значение записи выдачи имеет вид целого числа из указанного диапазона или строки NA длины 2.

Каждый номер профиля в запросе находится в диапазоне от 1 до k.

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

Куда дальше