Menu
CoddyTech

Job Sequencing Problem

Тебе даны n заданий в виде двух массивов: за задание i ты получаешь profit[i], если завершаешь его не позднее времени deadline[i]. Каждое задание занимает одну единицу времени. Ты выполняешь по одному заданию за раз, начиная со времени 0, и можешь пропустить любое задание. Задание со сроком выполнения 2 можно выполнять с 0 до 1 или с 1 до 2.

Верни наибольшую общую прибыль, которую ты можешь получить.

Функция

jobSequencing(deadline: integer-array, profit: integer-array) → integer
deadlineinteger-array
время, к которому должна быть завершена каждая задача, от 1 до n
profitinteger-array
сколько приносит каждая задача; profit[i] относится к deadline[i]
Возвращаетinteger
наибольшая суммарная прибыль от заданий, которые могут быть завершены до своих сроков

Ограничения

  • 1 ≤ deadline.length == profit.length ≤ 5000
  • 1 ≤ deadline[i] ≤ n, где n — количество заданий
  • 1 ≤ profit[i] ≤ 105
  • Массивы не отсортированы. У нескольких заданий может быть одинаковый срок выполнения или прибыль.

Примеры

Ввод
deadline = [3, 1, 2, 3, 1]profit = [40, 35, 30, 25, 50]
Вывод
120
Пояснение
Помещается только одна из двух задач со сроком 1, поэтому выполни задачу стоимостью 50. Затем задача стоимостью 30 завершается к своему сроку 2, а задача стоимостью 40 — к своему сроку 3: 50 + 30 + 40 = 120.
challenge icon

Дополнительный вопрос

Что, если выполнение задания i занимает duration[i] единиц времени вместо одной? Даёт ли выполнение сначала самого прибыльного задания по-прежнему наилучший общий результат?

Сбросить код
def jobSequencing(deadline, profit):
    # Напишите код здесь

Тест #1

Тест #2

Тест #3

Аргументы

deadline = [3, 1, 2, 3, 1]
profit = [40, 35, 30, 25, 50]

Ожидаемый вывод

120