Ctrl K

Рейтинг стажёров по отзывам

Средняя
Наставники пишут короткие отзывы о стажёрах. Есть список слов-похвал praise и список слов-замечаний critique; ни одно слово не встречается в обоих списках. Отзыв reviews[i] относится к стажёру с номером ids[i], у каждого стажёра ровно один отзыв. Каждое слово отзыва, которое есть в praise, приносит стажёру +3 балла, каждое слово из critique — −1 балл, остальные слова ничего не меняют. Если слово повторяется, оно учитывается при каждом появлении. Упорядочьте стажёров по убыванию баллов, а при равных баллах — по возрастанию номера. Верните номера первых k стажёров в этом порядке.
Пример 1
praise=['neat', 'fast'], critique=['late', 'sloppy'], reviews=['neat and fast work', 'late again', 'fast but sloppy'], ids=[7, 3, 5], k=2 → [7, 5]

У стажёра 7 два слова похвалы: 3 + 3 = 6 баллов. У стажёра 3 одно замечание: -1. У стажёра 5 одна похвала и одно замечание: 3 - 1 = 2. Двое лучших — 7 и 5.

Пример 2
praise=['kind'], critique=['rude'], reviews=['kind', 'kind'], ids=[9, 4], k=1 → [4]

У обоих по 3 балла, при равенстве выше стоит меньший номер — 4.

Пример 3
praise=['clear'], critique=['vague'], reviews=['vague and vague again', 'nothing special'], ids=[12, 30], k=2 → [30, 12]

Слово, встреченное дважды, считается дважды: у 12 получается -2, у 30 — 0, поэтому 30 впереди.

Ограничения
  • 1 ≤ len(praise), len(critique) ≤ 10⁴
  • слова в praise и critique состоят из 1–100 строчных латинских букв, общих слов у списков нет
  • 1 ≤ len(reviews) = len(ids) ≤ 10⁴
  • reviews[i] — от 1 до 100 символов: строчные латинские буквы и одиночные пробелы между словами
  • 1 ≤ ids[i] ≤ 10⁹, все номера различны
  • 1 ≤ k ≤ len(reviews)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСамые частые запросы СредняяЛучший ролик самого популярного автора СредняяРазложить анаграммы по группам СредняяСамые частые значения СредняяСимволы, сгруппированные по частоте Средняя
загружаем Python…
Вход
praise=['neat', 'fast'], critique=['late', 'sloppy'], reviews=['neat and fast work', 'late again', 'fast but sloppy'], ids=[7, 3, 5], k=2
Ожидается
[7, 5]

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 84 теста на сервере, включая скрытые.