만드는 중입니다

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

토너먼트 시드 배정

면접 대비

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

요약
플레이어 2^n명의 레이팅과 기준값 k가 주어졌을 때, 높은 레이팅 선수가 항상 이기는 토너먼트에서 차이가 k 이하인 경기의 최대 개수를 구합니다.
난이도

보통10점 중 5점

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

문제

1대1 게임의 단판 토너먼트 대진표를 짜야 한다. 등록한 선수 수는 정확히 22의 거듭제곱이고, 우승자를 가리는 데 필요한 라운드 수와 같은 수의 라운드가 열린다. 각 선수는 고유한 숫자 레이팅을 가지며, 두 선수가 맞붙으면 레이팅이 높은 선수가 항상 이긴다. 대회를 최대한 흥미롭게 만들고 싶으므로 다음 조건을 만족해야 한다.

  • 레이팅 상위 2명은 결승에, 상위 4명은 준결승에, 상위 8명은 8강에 나온다. 이런 식으로 계속된다. 레이팅이 가장 높은 경기는 맨 마지막에 열린다.
  • 위 조건을 지키는 범위에서 "접전" 경기가 최대한 많아야 한다. 두 선수의 레이팅 차이가 기준값 이하이면 그 경기를 "접전"이라고 한다.

라운드 수, 접전 기준값, 선수들의 레이팅이 주어졌을 때 위 조건을 지키면서 가능한 접전 경기 수의 최댓값을 구하시오.

입력

첫 줄에 정수 nn (1≤n≤181 \leq n \leq 18)과 kk (1≤k≤1091 \leq k \leq 10^9)가 주어진다. nn은 라운드 수이고, kk는 경기가 접전이 되는 레이팅 차이다.

이후 2n2^n개의 줄에 선수의 레이팅 rr (1≤r≤1091 \leq r \leq 10^9)이 한 개씩 주어진다. 레이팅은 모두 서로 다르다.

출력

위 조건을 만족하는 토너먼트에서 가능한 접전 경기 수의 최댓값을 한 줄에 출력한다.

예제2

  1. 예제 1

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

    입력
    2 5
    9
    1
    6
    4
    
    예상 출력
    3