Ctrl K

Заказы по навыкам

Средняя
В мастерской работают мастера; masters[i] — уровень навыка i-го мастера. Поступили заказы: orders[j] = [need, pay] означает, что заказ j требует навыка ровно need и приносит pay. Каждый мастер выполняет не больше одного заказа и только такой, у которого need равен его навыку. Кроме того, сегодня вышел ещё один мастер-универсал: он может взять любой один заказ, независимо от навыка. Каждый заказ выполняется не больше одного раза. Верните наибольший суммарный доход.
Пример 1
masters=[2, 2, 5], orders=[[2, 30], [2, 50], [2, 20], [5, 10], [7, 40]] → 130

Два мастера с навыком 2 берут заказы за 50 и 30, мастер с навыком 5 — заказ за 10. Универсал берёт самый дорогой из оставшихся — за 40. Итого 130.

Пример 2
masters=[3], orders=[[1, 8], [2, 9]] → 9

Мастеру с навыком 3 подходящих заказов нет, а универсал берёт один заказ — за 9.

Пример 3
masters=[4, 4], orders=[[4, 6], [4, 6], [4, 6]] → 18
Ограничения
  • 1 ≤ len(masters) ≤ 10⁵
  • 1 ≤ masters[i] ≤ 10⁹
  • 1 ≤ len(orders) ≤ 10⁵
  • orders[j] = [need, pay], 1 ≤ need, pay ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиСтудии для записи СредняяЗадания с перерывом на остывание СредняяМетки вразнобой СредняяУбрать половину списка СредняяОдно мероприятие в день Средняя
загружаем Python…
Вход
masters=[2, 2, 5], orders=[[2, 30], [2, 50], [2, 20], [5, 10], [7, 40]]
Ожидается
130

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