Шахматисты в радиусе результатов

тема: Расстояния и kNN · уровень: базовый

Условие

После шахматного турнира организаторы составили две таблицы. В первой указаны очки каждого шахматиста в рапид-партиях, во второй — очки в классических партиях. Строки второй таблицы могут идти в другом порядке.

Для шахматиста с известными результатами образуется точка (x, y), где x — очки в рапиде, а y — очки в классике. Результат -1 означает пропуск: шахматист не участвовал в соответствующем виде программы. Шахматисты хотя бы с одним пропуском не учитываются.

Даны точка запроса (qx, qy) и радиус r. Нужно посчитать число шахматистов, расстояние от точки которых до точки запроса не превосходит r. Используется евклидово расстояние: d = sqrt((x - qx)^2 + (y - qy)^2). Учитываются все шахматисты, для которых d <= r.

При равенстве расстояния радиусу шахматист включается в ответ.

Если после исключения пропусков не осталось ни одного шахматиста, нужно вывести 0.

Формат ввода

В первой строке дано целое число n — число шахматистов в каждой таблице.

В следующих n строках находится первая таблица. В каждой строке записаны идентификатор шахматиста id и его число очков в рапид-партиях rapid.

В следующих n строках находится вторая таблица. В каждой строке записаны идентификатор шахматиста id и его число очков в классических партиях classic.

Множества идентификаторов в двух таблицах совпадают, а каждый идентификатор встречается в каждой таблице ровно один раз.

В последней строке записаны три целых числа qx, qy, r — координаты точки запроса и радиус.

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

Выведите одно целое число — количество шахматистов в заданном радиусе.

Дробная часть не возникает, поскольку выводится количество шахматистов.

Ограничения

1 <= n <= 1000.

Длина идентификатора id составляет от 1 до 12 символов. Идентификатор состоит из строчных латинских букв, цифр и символа _.

rapid и classic равны -1 или целому числу от 0 до 100.

0 <= qx, qy <= 100.

0 <= r <= 150.

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

Куда дальше