Максимальное произведение массива после вычитания 1 из любого элемента N раз

Опубликовано: 21 Сентября, 2022

Учитывая массив arr[] положительных целых чисел размера M и целое число N , задача состоит в том, чтобы максимизировать произведение массива после вычитания 1 из любого элемента N раз

Примеры :

Input: M = 5, arr[] = {5, 1, 7, 8, 3}, N = 2
Output: 630
Explanation: After subtracting 1 from arr[3] 2 times, array becomes {5, 1, 7, 6, 3} with product = 630
Input: M = 2, arr[] = {2, 2}, N = 4
Output: 0
Explanation: After subtracting 2 from arr[0] and arr[1] 2 times each, array becomes {0, 0} with product = 0

Подход : Задача может быть решена с помощью max-heap Выполните следующие шаги, чтобы решить проблему:

  • Вставьте все элементы в максимальную кучу
  • Извлеките верхний элемент из max-heap и уменьшите его на 1, а также уменьшите N
  • Вставьте выскочивший элемент обратно в max-heap
  • Продолжайте этот процесс, пока N > 0
  • Максимальный продукт будет произведением всех элементов внутри максимальной кучи.

Ниже приведена реализация вышеуказанного подхода:

Временная сложность : O(nlogm)
Вспомогательное пространство : O (м)