XNOR의 반란

면접 대비

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

요약
N개의 B비트 정수에서 하나 이상을 골라 순서를 유지한 채 차례로 XNOR한 값이 최대가 되도록 한다.
난이도

보통10점 중 7점

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

문제

PS 문제에는 항상 XOR만 사용된다는 점에 분노한 XNOR이 음이 아닌 정수 NN개를 모아 반란을 일으키기로 했다!

XNOR은 체계적이기 때문에, 반란을 일으키기 전 반란의 강도를 계산해 보기로 했다. XNOR이 일으키는 반란이기 때문에, 반란의 강도는 주어진 수를 앞에서부터 차례로 XNOR한 결과가 된다. XNOR이 모은 정수들은 모두 부호 없는 BB비트 정수로 표현할 수 있기 때문에, BB비트 정수 간의 XNOR을 사용한다.

반란의 강도가 높을수록 성공할 확률이 높아지기 때문에, XNOR은 NN개의 수 중 하나 이상의 수를 선택해서 반란의 강도를 최대화하기로 했다. 이때 선택된 수의 순서를 바꿀 수는 없다.

입력

첫 번째 줄에 XNOR이 모은 수의 개수 NN과, XNOR이 사용하는 비트의 수 BB가 공백으로 구분되어 주어진다. (1≤N≤200,000;(1\le N\le 200\\, 000; 1≤B≤60)1\le B\le 60)

두 번째 줄에 XNOR이 모은 NN개의 음이 아닌 정수 A_1,A_2,…,A_NA\_1,A\_2,\ldots ,A\_N이 10진수의 형태로 공백으로 구분되어 주어진다. (0≤A_i<2B)(0\le A\_{i}\lt 2^B)

출력

첫 번째 줄에 XNOR이 만들어 낼 수 있는 최대 반란의 강도를 출력한다.

힌트

두 수의 Bitwise XNOR 연산은 두 수를 이진수로 변환한 뒤, 각 비트를 비교하여 같으면 11, 다르면 00을 비트별로 계산하는 연산이다. 예로, 1100_(2) XNOR 0110_(2)=0101_(2)1100\_{(2)}\text{ XNOR } 0110\_{(2)}=0101\_{(2)}가 된다.

예제2

  1. 예제 1

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

    입력
    1 60
    1217
    
    예상 출력
    1217