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

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

수 색칠하기

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

요약
배열의 한 값이 다른 값의 부분 마스크이고 두 값의 XOR에 켜진 비트가 k개 이상인 쌍이 같은 색을 갖지 않도록 필요한 색의 최소 개수를 구합니다.
난이도

어려움10점 중 8점

유형
비트 연산, 동적 계획법
정답자
아직 제출이 없습니다

문제

음이 아닌 정수 배열 a1,a2,…,ana_1, a_2, \ldots, a_n과 정수 kk가 주어진다. 두 인덱스 i,ji, j가 다음 두 조건을 모두 만족하면 충돌한다고 한다.

  1. aiAND⁡aj=aia_i \operatorname{AND} a_j = a_i
  2. aiXOR⁡aja_i \operatorname{XOR} a_j를 이진수로 나타냈을 때 1인 비트가 kk개 이상이다.

여기서 AND는 비트별 AND 연산이고, XOR은 비트별 배타적 논리합 연산이다.

mm개의 색으로 이루어진 일관된 색칠은 1≤ci≤m1 \le c_i \le m을 만족하는 정수 배열 c1,…,cnc_1, \ldots, c_n이며, 충돌하는 어떤 인덱스 쌍 i,ji, j에 대해서도 ci=cjc_i = c_j가 아닌 배열이다.

a1,…,ana_1, \ldots, a_n의 일관된 색칠에 필요한 색의 최소 개수를 구하라.

입력

첫 줄에 두 정수 n,kn, k (1≤n,k≤5⋅1051 \leq n, k \leq 5 \cdot 10^5)가 주어진다.

다음 줄에 nn개의 정수 aia_i (0≤ai<2220 \leq a_i < 2^{22})가 주어진다.

출력

일관된 색칠에 필요한 색의 최소 개수를 한 줄에 출력한다.

힌트

두 가지 색으로 된 일관된 색칠의 한 예는 1,1,1,21, 1, 1, 2이다. 인덱스 2와 4가 충돌하므로 색이 하나로는 부족하다.

예제1

  1. 예제 1

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