냅색 경우의 수

시간 제한1초메모리 제한128 MB

요약
무게가 큰 최대 30개의 물건과 용량 제한이 주어질 때, 총 무게가 용량 이하인 부분집합의 개수를 구합니다.
난이도

보통10점 중 7점

유형
분할 정복, 이분 탐색, 정렬, 조합론
정답자
아직 제출이 없습니다

문제

세준이는 N개의 물건과 최대 무게 C까지 담을 수 있는 가방 하나를 가지고 있다.

각 물건은 한 번씩만 선택할 수 있으며, 아무것도 넣지 않는 경우도 하나의 방법으로 센다. 선택한 물건들의 무게 합이 C 이하가 되도록 가방에 넣는 방법의 수를 구하시오.

입력

첫째 줄에 물건의 수 N과 가방의 최대 허용 무게 C가 주어진다. N은 30 이하의 자연수이고, C는 10^9 이하의 음이 아닌 정수이다.

둘째 줄에는 N개 물건의 무게가 주어진다. 각 무게는 10^9 이하의 자연수이다.

출력

무게 합이 C 이하가 되도록 물건을 고르는 방법의 수를 출력한다.

예제6

  1. 예제 1

    입력
    2 1
    1 1
    
    예상 출력
    3
    
  2. 예제 2

    입력
    1 1
    1
    
    예상 출력
    2
    
  3. 예제 3

    입력
    1 2
    1
    
    예상 출력
    2
    
  4. 예제 4

    입력
    2 1
    2 2
    
    예상 출력
    1
    
  5. 예제 5

    입력
    2 2
    1 1
    
    예상 출력
    4
    
  6. 예제 6

    입력
    30 30
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    
    예상 출력
    1073741824