Помогите построить алгоритм поиска неопределённого количества элементов в массиве, в суммме дающих N
Решал задачу, если знаете как решить, напишите
F. Кирпичи
Ограничение времени 1 секунда
Ограничение памяти 64Mb
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Вася решил выложить бордюр из кирпичей для дорожки на своем участке. Расположенный по соседству кирпичный завод выпускает кирпичи длиной A1, A2, …, Am. Промоутеры завода раздают потенциальным клиентам по 2 кирпича бесплатно. Вася взял по 2 кирпича каждого типа и теперь хочет узнать, может ли он выложить из них бордюр длиной N и толщиной в один кирпич.
Формат ввода
Сначала вводится число N (1 ≤ N ≤ 109), затем — число M (1 ≤ M ≤ 15) и далее M попарно различных чисел A1, A2, …, AM (1 ≤ Ai ≤ 109).
Формат вывода
Выведите сначала K — количество кирпичей, которое нужно использовать для выкладывания бордюра, если можно выложить бордюр длиной ровно N. Далее выведите K чисел, задающих длины использованных кирпичей. Если решений несколько, выведите вариант, в котором Вася использует наименьшее количество кирпичей. Если таких вариантов несколько, выведите любой из них.
Если для выкладывания бордюра придется обязательно разломить какой-то кирпич, то выведите одно число 0. Если же у Васи не хватит кирпичей, чтобы выложить бордюр, выведите одно число –1 (минус один).
Пример 1
Ввод/Вывод
5 2 1 2/ 3 2 2 1
Пример 2
Ввод/Вывод
7 2 1 2/ -1
Пример 3
Ввод/Вывод
5 2 3 4/ 0