Ранжирование резюме
Просмотр в формате PDFВ HR-системе на одну вакансию поступило несколько резюме. Для каждого кандидата известны:
- имя
name— непустая строка из латинских букв длиной не более20, все имена различны; - опыт работы
exp— целое число лет; - результат внутреннего тестирования
score— целое число баллов; - ожидаемая зарплата
salary— целое число; - список из
sнавыковskills—sразличных строк, каждая состоит из строчных латинских букв.
Для вакансии заранее заданы:
- минимально допустимый опыт
min_exp; - минимально допустимый балл
min_score; - максимально допустимая зарплата
max_salary; - список из
rобязательных навыковrequired.
Кандидат проходит первичный фильтр тогда и только тогда, когда одновременно выполнены все условия:
exp >= min_exp;score >= min_score;salary <= max_salary;- среди навыков кандидата присутствуют все навыки из
required.
Если r = 0, то условие по обязательным навыкам считается выполненным автоматически.
Все кандидаты, прошедшие фильтр, ранжируются по убыванию значения rating, вычисляемого по формуле:
rating = score * 10 + matched_optional * 5 + exp * 2 - salary // 10000
Здесь matched_optional — количество навыков кандидата, не входящих в список required.
Если рейтинги двух кандидатов равны, выше располагается кандидат с лексикографически меньшим именем.
Требуется вывести имена всех кандидатов, прошедших фильтр, в порядке итогового ранжирования.
Входные данные
Первая строка содержит четыре целых числа min_exp, min_score, max_salary, r.
Вторая строка содержит r названий обязательных навыков, разделённых пробелами. Если r = 0, эта строка пуста, но присутствует.
Третья строка содержит целое число n — количество кандидатов.
Далее следуют описания кандидатов, по два строки на каждого:
- первая строка содержит
name exp score salary s; - вторая строка содержит
sназваний навыков через пробел. Еслиs = 0, эта строка пуста, но присутствует.
Выходные данные
Выведите имена всех кандидатов, прошедших фильтр, по одному в строке, в порядке, описанном в условии.
Если не прошёл ни один кандидат, выведите ровно одну строку NO CANDIDATES.
Ограничения
0 <= exp <= 600 <= score <= 1001 <= salary <= 10^90 <= s <= 200 <= r <= 20- длина имени не более
20 - длина каждого навыка не более
20 1 <= n <= 10^4
Примеры
Пример 1
Входные данные
2 40 250000 2
sk0 sk1
4
Ann 2 40 250000 2
sk0 sk1
Bob 5 60 200000 3
sk0 sk1 sk2
Cara 5 60 200000 3
sk0 sk2 sk3
Dan 1 90 100000 3
sk0 sk1 sk4
Выходные данные
Bob
Ann
Пример 2
Входные данные
0 0 1000000000 0
5
alex 10 50 100000 0
brad 10 50 100000 1
sk0
clio 8 60 120000 2
sk1 sk2
dora 8 60 120000 2
sk3 sk4
eric 0 0 1 0
Выходные данные
clio
dora
brad
alex
eric
Комментарии