Для решения задачи, нам нужно найти такую комбинацию упаковок, чтобы их суммарное количество ручек было равно M и чтобы нельзя было добавить две упаковки одного размера.
Переберем все возможные комбинации упаковок от 1 до N и найдем такие две упаковки, сумма которых ближе всего к M.
Для этого:
1. Зададим переменные min_diff и best_combo, для хранения минимальной разницы и оптимальной комбинации упаковок соответственно. Изначально установим min_diff как бесконечность.
2. Запустим цикл от 1 до N включительно, перебирая размер упаковки i.
3. Внутри этого цикла запустим второй цикл от 1 до N, перебирая размер упаковки j.
4. Если сумма i + j равна или наиболее близка к M, и abs(i – j) больше 0 (чтобы исключить комбинации с двумя упаковками одного размера), то запомним это значение разницы.
5. Если новая разница меньше текущей минимальной разницы, то обновим min_diff и best_combo.
6. По завершении циклов, выведем оптимальную комбинацию упаковок на экран.
Таким образом, мы найдем комбинацию упаковок, которая позволит Игорю заказать нужное количество ручек и исключит возможность добавления двух упаковок одного размера.