September 09, 2021
import sys
si = sys.stdin.readline
n, s = map(int, si().split())
nums = list(map(int, si().split()))
answer = 0
def solve(k, value):
global answer
if k == n:
if value == s:
answer += 1
else:
# k 번째 원소 제외
solve(k + 1, value)
# k번째 원소 포함
value += nums[k]
solve(k + 1, value)
solve(0, 0)
# 진부분집합이 아닌 경우 제외
if s == 0:
answer -= 1
print(answer)
import sys
n, S = map(int, sys.stdin.readline().split(' '))
nums = list(map(int, sys.stdin.readline().split(' ')))
ans = 0
def rec_func(k, value):
if k == n:
global ans
if value == S:
ans += 1
else:
rec_func(k + 1, value + nums[k])
rec_func(k + 1, value)
rec_func(0, 0)
if S == 0:
ans -= 1
print(ans)