Найдите сумму разности максимума и минимума по всем возможным подмножествам размера K

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

Дан массив arr[] из N целых чисел и целое число K , задача состоит в том, чтобы найти сумма разница между максимальным и минимальным элементами по всем возможным подмножествам размера K .

Примеры:

Input: arr[] = {1, 1, 3, 4}, K = 2
Output: 11
Explanation:
There are 6 subsets of the given array of size K(= 2). They are {1, 1}, {1, 3}, {1, 4}, {1, 3}, {1, 4} and {3, 4}.
The values of maximum – minimum for each of the subsets respectively are 0, 2, 3, 2, 3, 1 and their sum is 11.

Input: arr[] = {1, 1, 1}, K = 1
Output: 0

Подход: Данная проблема может быть решена на основе следующих наблюдений:

  • Сумма разности между максимумом и минимумом из всех наборов не зависит друг от друга, т. е. может быть вычислена как сумма максимума из всех наборов размера K – сумма минимума из всех наборов размера K .
  • В отсортированном массиве arr[] arr[i] является максимальным из всех наборов, имеющих элементы из массива в диапазоне [0, i – 1] . Следовательно, количество наборов размера K, имеющих arr[i] в качестве максимального элемента массива, можно рассчитать как . Точно так же количество наборов размера K, имеющих arr[i] в качестве минимального элемента, равно .
  • Значение можно эффективно рассчитать, используя подход, обсуждаемый в этой статье.

Используя приведенные выше наблюдения, данную проблему можно решить, выполнив следующие шаги:

  • Отсортируйте заданный массив arr[] в порядке неубывания.
  • Чтобы вычислить сумму максимума всех наборов размера K , создайте переменную sumMax и для каждого индекса i в диапазоне [K – 1, N – 1] , выполните итерацию по массиву arr[] и добавьте в суммуМакс .
  • Точно так же, чтобы вычислить сумму минимума всех наборов размера K , создайте переменную sumMin и для каждого i в диапазоне [0, NK] выполните итерацию по массиву arr[] и добавьте в суммуМин .
  • Значение sumMax – sumMin является требуемым ответом.

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

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