AT_abc169_f [ABC169F] Knapsack for All Subsets
Description
[problemUrl]: https://atcoder.jp/contests/abc169/tasks/abc169_f
長さ $ N $ の正整数列 $ A_1 $, $ A_2 $, $ \ldots $, $ A_N $ と正の整数 $ S $ が与えられます。
集合$ \{1,\ 2,\ \ldots\ ,\ N\ \} $ の空でない部分集合 $ T $ について、$ f(T) $ を以下のように定めます。
- $ T $ の空でない部分集合 $ \{x_1,\ x_2,\ \ldots\ ,\ x_k\ \} $ であって、 $ A_{x_1}+A_{x_2}+\cdots\ +A_{x_k}\ =\ S $ をみたすものの個数
$ T $ として考えられる集合は $ 2^N-1 $ 通りありますが、そのすべてに対する $ f(T) $ の和を求めてください。ただし、答えは非常に大きくなることがあるので、$ 998244353 $ で割ったあまりを出力してください。
Input Format
入力は以下の形式で標準入力から与えられる。
> $ N $ $ S $ $ A_1 $ $ A_2 $ $ ... $ $ A_N $
Output Format
$ f(T) $ の和を $ 998244353 $ で割ったあまりを出力せよ。
Explanation/Hint
### 制約
- 入力は全て整数である。
- $ 1\ \leq\ N\ \leq\ 3000 $
- $ 1\ \leq\ S\ \leq\ 3000 $
- $ 1\ \leq\ A_i\ \leq\ 3000 $
### Sample Explanation 1
それぞれ以下のように計算できて、その和は $ 6 $ です。 - $ f(\{1\})\ =\ 0 $ - $ f(\{2\})\ =\ 0 $ - $ f(\{3\})\ =\ 1 $ ( $ \{3\} $ の $ 1 $ つ) - $ f(\{1,\ 2\})\ =\ 1 $ ( $ \{1,\ 2\} $ の $ 1 $ つ) - $ f(\{2,\ 3\})\ =\ 1 $ ( $ \{3\} $ の $ 1 $ つ) - $ f(\{1,\ 3\})\ =\ 1 $ ( $ \{3\} $ の $ 1 $ つ) - $ f(\{1,\ 2,\ 3\})\ =\ 2 $ ( $ \{1,\ 2\},\ \{3\} $ の $ 2 $ つ)