この問題は、動的計画法を使用することで解くことができます。
まず、駄菓子を順番に見ていき、\(i\) 番目まで選んだ時に、\(j\) 円で買えるかを判定します。
例えば入力例1だと、1個目まで選ぶと使用できる金額は0円、10円になります。2個目まで選ぶと、0円から派生する金額は0円、20円、10円から派生する金額は10円、30円となります。
ここで、\(M\) 円を超える金額は記録しないようにしましょう。
こうすることで、\(2^N\) 通りを試さずに、\(O(NM)\) で求められます。
実装例