만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

보트

면접 대비

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

요약
두 명까지 탈 수 있고 무게 제한이 있는 보트로 모든 주민을 강 건너로 옮기는 최소 횟수를 구합니다.
난이도

보통10점 중 4점

유형
그리디, 투 포인터, 정렬
정답자
아직 제출이 없습니다

문제

강이 위 바라레와 아래 바라레를 나누고 있다. 두 마을 사이에서 사람을 실어 나르기 위해 최대 두 명까지 탈 수 있고 무게 한도가 정해진 2인승 보트가 한 대 있다. 보트는 최소 한 명이 조종해야 하므로, 승객이 없으면 강을 건널 수 없다.

전국 바라레 축제는 위 바라레에서 열린다. 아래 바라레의 주민 모두가 이 축제에 참여하려 하며, 가능한 한 빨리 위 바라레로 이동해야 한다. 보트가 강을 건너는 횟수를 최소로 하여 모든 주민을 위 바라레로 옮기는 것이 과제이다.

입력

첫 번째 줄에 두 정수 nn과 ww가 주어진다. nn은 아래 바라레 주민의 수(1≤n≤10001 \le n \le 1000)이고, ww는 보트가 실을 수 있는 최대 무게(1≤w≤1061 \le w \le 10^6)이다.

두 번째 줄에는 아래 바라레 주민들의 몸무게를 나타내는, 공백으로 구분된 nn개의 정수가 주어진다. 모든 몸무게는 10610^6 이하의 양의 정수이다.

출력

모든 주민을 옮길 수 없으면 -1을 출력한다. 그렇지 않으면 아래 바라레의 모든 주민을 위 바라레로 옮기는 데 필요한 보트의 최소 강 횟단 횟수를 출력한다. 횡단은 양방향을 모두 센다.

예제2

  1. 예제 1

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

    입력
    3 4
    2 3 4
    
    예상 출력
    -1