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

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

고층 빌딩의 소들

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

요약
소 18마리의 무게와 엘리베이터 정원이 주어질 때, 정원을 넘지 않으면서 모든 소를 옮기는 최소 운행 횟수를 구한다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 그리디, 완전 탐색
정답자
아직 제출이 없습니다

문제

베시와 친구들에 관해 잘 알려지지 않은 사실 하나는, 이들이 계단 오르기 경주를 무척 좋아한다는 것입니다. 조금 더 잘 알려진 사실은, 소들이 계단을 내려가는 것을 정말 싫어한다는 것입니다. 그래서 소들은 가장 좋아하는 고층 빌딩 꼭대기까지 경주를 마친 뒤 곤란한 상황에 처했습니다. 계단으로 내려가기를 거부한 소들은 1층으로 돌아가기 위해 엘리베이터를 이용할 수밖에 없습니다.

엘리베이터의 최대 적재 용량은 WW 파운드이고, ii번 소의 무게는 CiC_i 파운드입니다. NN마리의 모든 소를 가장 적은 엘리베이터 운행 횟수로 1층까지 내려보내는 방법을 구하세요. 한 번의 운행에 탑승한 소들의 무게 합은 WW를 넘을 수 없습니다.

필요한 최소 운행 횟수만 출력하면 됩니다.

제한: 1≤N≤181 \le N \le 18, 1≤W≤1081 \le W \le 10^8, 1≤Ci≤W1 \le C_i \le W.

입력

  • 첫 번째 줄: 두 정수 NN과 WW가 공백으로 구분되어 주어집니다.
  • 두 번째 줄부터 N+1N+1번째 줄까지: i+1i+1번째 줄에는 한 소의 무게를 나타내는 정수 CiC_i가 주어집니다.

출력

  • 모든 소를 1층까지 내려보내는 데 필요한 최소 엘리베이터 운행 횟수를 정수 하나로 출력합니다.

힌트

예시에서는 무게가 각각 5, 6, 3, 7 파운드인 소 4마리가 있고, 엘리베이터는 최대 10 파운드까지 실을 수 있습니다. 무게가 3인 소는 다른 어느 소 한 마리와도 같이 탈 수 있지만, 나머지 세 소는 서로 짝지어 태우기에는 너무 무겁습니다. 따라서 최소 3번의 운행이 필요합니다.

예제1

  1. 예제 1

    입력
    4 10
    5
    6
    3
    7
    
    예상 출력
    3