만드는 중입니다

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

XNOR의 반란

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

요약
B비트 정수 N개가 주어질 때, 공집합이 아닌 부분수열을 골라 왼쪽부터 B비트 XNOR로 누적한 값을 최대로 만드는 문제입니다.
난이도

보통10점 중 6점

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

문제

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

XNOR은 체계적인 편이라, 반란을 일으키기 전에 반란의 강도를 먼저 계산해 보기로 했다. XNOR이 일으키는 반란이므로 강도는 주어진 수를 앞에서부터 차례로 XNOR한 결과다. XNOR이 모은 정수는 모두 부호 없는 BB비트 정수로 표현할 수 있어서, BB비트 정수끼리 XNOR을 사용한다.

강도가 높을수록 성공할 확률이 높아지므로, XNOR은 NN개의 수 중 하나 이상의 수를 골라 강도를 최대화하려고 한다. 이때 고른 수의 순서는 바꿀 수 없다.

입력

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

두 번째 줄에 XNOR이 모은 NN개의 음이 아닌 정수 A1,A2,…,ANA_1,A_2,\ldots,A_N이 10진수의 형태로 공백으로 구분되어 주어진다. (0≤Ai<2B0\le A_{i}<2^B)

출력

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

힌트

두 수의 비트별 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