XNOR의 반란
시간 제한1초메모리 제한1024 MB
B비트 정수 N개가 주어질 때, 공집합이 아닌 부분수열을 골라 왼쪽부터 B비트 XNOR로 누적한 값을 최대로 만드는 문제입니다.
문제
PS 문제에는 항상 XOR만 사용된다는 점에 분노한 XNOR이 음이 아닌 정수 개를 모아 반란을 일으키기로 했다!
XNOR은 체계적인 편이라, 반란을 일으키기 전에 반란의 강도를 먼저 계산해 보기로 했다. XNOR이 일으키는 반란이므로 강도는 주어진 수를 앞에서부터 차례로 XNOR한 결과다. XNOR이 모은 정수는 모두 부호 없는 비트 정수로 표현할 수 있어서, 비트 정수끼리 XNOR을 사용한다.
강도가 높을수록 성공할 확률이 높아지므로, XNOR은 개의 수 중 하나 이상의 수를 골라 강도를 최대화하려고 한다. 이때 고른 수의 순서는 바꿀 수 없다.
입력
첫 번째 줄에 XNOR이 모은 수의 개수 과 XNOR이 사용하는 비트의 수 가 공백으로 구분되어 주어진다. (; )
두 번째 줄에 XNOR이 모은 개의 음이 아닌 정수 이 10진수의 형태로 공백으로 구분되어 주어진다. ()
출력
첫 번째 줄에 XNOR이 만들어 낼 수 있는 최대 반란의 강도를 출력한다.
힌트
두 수의 비트별 XNOR 연산은 두 수를 이진수로 바꾼 뒤 각 자리의 비트를 비교하는 연산이다. 같으면 , 다르면 이 된다. 예를 들어 가 된다.