Проверьте, возможно ли сопоставление, чтобы сумма первого массива была больше, чем второй массив
Даны положительное целое число K и два массива A[] и B[] размера N и M соответственно, каждый из которых содержит элементы в диапазоне [1, K] . Задача состоит в том, чтобы сопоставить все числа от 1 до K с функцией f , такой что f(1)<f(2)<f(3)<…<f(K) , и найти, является ли сумма f(A[ i]) для 0≤i<N больше, чем сумма f(B[i]) для 0≤i<M .
Примеры:
Input: A[] = {2, 2, 2}, B[] = {1, 1, 3}, K=3
Output: YES
Explanation: One possible way is to assign the following values to the function f as follows:
f(1)=1
f(2)=2
f(3)=3
Sum of f(A[i]) for every i = 2+2+2 = 6 and sum of f(B[i]) for every i = 1+1+3 = 5.Input: A[] = {8, 2, 8, 6, 9, 10}, B[] = {1, 2, 3, 4}, K=10
Output: YES
Подход: выполните следующие шаги, чтобы решить проблему:
- Если значение N>M , выведите «YES» в качестве ответа, так как всегда можно сделать такое присваивание, что сумма A больше, чем B .
- В противном случае отсортируйте массивы A[] и B[] в порядке убывания.
- Выполните итерацию в диапазоне [0 , N-1] , используя переменную i , и если для любого индекса A[i]>B[i] выведите «YES» в качестве ответа, так как присвоение A[i] достаточно большого значения сделает сумму A[] больше, чем B[] .
- В противном случае в качестве результата выведите «NO» .
Ниже приведена реализация вышеуказанного подхода:
Временная сложность: O (N * log (N))
Вспомогательное пространство: O(1)