Частное от задачи о двух кучах камней - распространенной на олимпиадах как представитель динамического программирования. Неплохо расписано
здесь, но вряд ли шкурка стоит вычинки. Проще раскидать приблизительно - кидаем самый большой кусок на одну кучу. Если меньше 50%, докидываем самых маленьких. На этапе, когда станет больше 50% возвращаемся на шаг назад. Либо не возврашаемся, если не намного больше. Остальное уходит во вторую "кучу"