Он неолимпиаден! Просто бестолковый подсчёт.
Описан классический алгоритм для задач из "динамического программирования", линейный по времени. До него нужно догадаться - чтобы избежать перебора.
Т.к. с арифметикой проблемы, условия ориентированы на сложение маленьких чисел
