Идея такая:
Массив из 

 отсортировать по возрастанию. Тогда последовательно проходим по массиву и берем максимально возможные 

, пока не наберем 

. Там остаются тонкости  - когда отказываться от 

 в пользу 

 - здесь простое соотношение, а также набор непосредственно вблизи границы, кроме перебора пока ничего не вижу, но даже перебор здесь будет небольшой.