Akhenaton, ну задача полностью перекраивается ... первоначальном варианты ты должен максимально приблизить группу к половине суммы всех элементов (можно рекурсией . можно динамическим подходом) ... в нашем же случае надо остаться максимально сбалансированным по количеству элементов ... ну я вижу следующий алгоритм (первая наброска) ... сортируешь массив S ... и проходя от максимального значения [K..0]до минимального делаешь выборки ... следующего типа :
N - текущий элемент (K->0)
берешь последующие элементы и из их суммы пытаешься набрать этот элемент элемент с шагом не больше 1 элемента (у нас по условию дельта 1) ...
В нашем варианте ... S: {1,2,3,4,10}
N = 10
10 > 4
10 > 4+3 (delta 1)
... g1 = {10} , g2 = {4,3}
N = 2
2 > 1
2 > 1 + null (end of iteration)
size(g1) > size(g2) - новая группа с меньшим значением уходив в группу с большей суммой
---
g1 = {10,1} , g2 = {4,3,2}
Если после прохода не получается условия что разница размера в 1 ... прогоняется слудеющее устакавание, где поэлементно меняются в группах значения ... и ищется оптимально (тут надо додумать , но в 90% такого не долно случаться)
Хотя ... надо еще подумать ... зря ты мне это на ночь глядя дал ... я же теперь не усну
Victoria nulla est, Quam quae confessos animo quoque subjugat hostes ...
Верю в смерть после жизни, любовь после секса и в крем после бритья ...