Codeforces Round 360 (Div. 1) |
---|
Закончено |
Пари хочет купить у Ария дорогую шоколадку. У неё есть n монет, номинал i-й монеты равен ci. Шоколадка стоит k, поэтому Пари выберет некоторое подмножество монет стоимостью ровно k и отдаст его Арию.
Пари посмотрела на свои монеты и задалась следующим вопросом: после того как она отдаст Арию монеты за шоколадку, какие значения Арий сможет набрать? Пари не хочется, чтобы Арий мог набрать много разных значений. Для каждого x она хочет знать, правда ли, что существует способ заплатить Арию сумму k, так что используя эти монетки он сможет набрать данное x.
Формально, Пари хочет найти все такие x, что из какого-нибудь подмножества монет с суммой k можно выбрать подмножество монет с суммой x, то есть можно выбрать такое подмножество монет для оплаты шоколадки, что Арий сможет потом набрать сумму x.
В первой строке записаны два целых числа n и k (1 ≤ n, k ≤ 500) — количество монет и цена шоколадки соответственно.
В следующей строке записаны n целых чисел c1, c2, ..., cn (1 ≤ ci ≤ 500) — номиналы монет Пари.
Гарантируется, что можно набрать сумму k, используя данные монеты.
В первой строке выведите единственное число q — количество подходящих x. Затем выведите в возрастающем порядке q целых чисел — суммы, которые Арий сможет набрать при каком-нибудь наборе монет, оплачивающем шоколадку.
6 18
5 6 1 10 12 2
16
0 1 2 3 5 6 7 8 10 11 12 13 15 16 17 18
3 50
25 25 50
3
0 25 50
Название |
---|