아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

아이스하키 세계선수권대회

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

요약
최대 40개 경기 입장권 가격 중 합이 예산 M을 넘지 않는 부분집합 개수를 구합니다.
난이도

보통10점 중 6점

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

문제

올해 아이스하키 세계선수권대회는 체코에서 열렸다. 프라하에 도착한 보베크는 경기를 몇 개 보려고 한다. 특별히 응원하는 팀도 없고 시간 제약도 없어서, 돈만 넉넉하면 모든 경기를 볼 수 있다. 그러나 보베크가 가진 돈은 정해진 액수의 체코 코루나뿐이고, 이 돈은 전부 입장권을 사는 데 쓸 수 있다.

경기마다 입장권 가격이 주어질 때, 가진 돈을 넘기지 않으면서 볼 경기를 고르는 방법이 몇 가지인지 구하라. 어떤 경기를 한쪽에서는 보고 다른 쪽에서는 보지 않는다면 두 방법은 서로 다르다. 한 경기도 보지 않는 것도 한 가지 방법으로 센다.

입력

첫째 줄에 경기 수 NN과 보베크가 쓸 수 있는 금액 MM이 주어진다. (1≤N≤401 \le N \le 40, 1≤M≤10181 \le M \le 10^{18})

둘째 줄에 경기 NN개의 입장권 가격이 공백으로 구분되어 주어진다. 각 가격은 11 이상 101610^{16} 이하의 정수다.

출력

가능한 방법의 수를 한 줄에 출력한다. NN의 제한 때문에 이 값은 2402^{40}을 넘지 않는다.

힌트

가격이 100100, 15001500, 500500, 500500, 10001000이고 예산이 10001000일 때 가능한 방법은 다음 여덟 가지다.

  • 한 경기도 보지 않는다
  • 100100짜리 경기
  • 500500짜리 첫 번째 경기
  • 500500짜리 두 번째 경기
  • 100100짜리 경기와 500500짜리 첫 번째 경기
  • 100100짜리 경기와 500500짜리 두 번째 경기
  • 500500짜리 경기 두 개
  • 10001000짜리 경기

예제4

  1. 예제 1

    입력
    5 1000
    100 1500 500 500 1000
    
    예상 출력
    8
    
  2. 예제 2

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

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

    입력
    4 10
    1 2 3 4
    
    예상 출력
    16