Назовем ваши «y суммы» бункеров. Вы заявляете, что хотите распределить свои предметы в сбалансированном состоянии между всеми ящиками.
Одна структура, имеющая аналогичное свойство, представляет собой сбалансированные деревья. Тогда я бы сделал следующее. Во-первых, заполнить сбалансированное дерево, используя выбранное свойство в качестве ключа. Затем опуститесь на желаемый уровень дерева, так что на этом уровне есть N элементов, N - количество требуемых бункеров. Поместите весь элемент потомка из каждого из этих узлов в отдельный ящик.
Единственное, что осталось, - это распределить элементы на узлах выше этого уровня в бункеры. Просто выберите критерии для выбора того, в каком бункере он будет идти, и примените это. Ваши корзины должны быть разумно сбалансированы.
Не используйте массивы, используйте, например, SortedMap <Свойство, список- >. –
starblue