원소 합치기
시간 제한1초메모리 제한1024 MB
인접한 두 원소를 정확히 K번 OR로 합친 뒤 남은 N-K개 원소를 모두 AND한 값의 최댓값을 구한다.
문제
음이 아닌 정수 개로 이루어진 배열 이 주어진다. 배열 에 다음 연산을 번 진행한다.
- 배열에 남아 있는 원소 중에서 인접한 두 원소를 선택해, 해당 원소들에 대해 bitwise 연산을 적용하고 그 결괏값으로 두 원소를 대체한다. 다시 말해 현재 배열의 길이를 이라 하면, 정수 를 선택해 을 로 변경한다. 이 연산을 진행한 뒤 배열의 길이는 만큼 줄어든다.
번의 연산을 진행한 이후 배열에 남은 개의 원소를 모두 bitwise 연산한 값의 최댓값을 구해보자.
bitwise 와 bitwise 연산에 대한 설명은 노트를 참고하라.
입력
첫 번째 줄에 과 가 공백으로 구분되어 주어진다.
두 번째 줄에 배열 의 원소 이 공백으로 구분되어 주어진다.
출력
총 번의 연산을 진행한 후 배열에 남은 개의 원소를 모두 bitwise 연산한 값의 최댓값을 출력한다.
힌트
bitwise 연산자들은 비트 단위로 연산을 시행한다.
-
bitwise 연산(\\&)은 두 수의 각 비트마다 다음과 같은 연산을 진행한다.
- 같은 자릿수의 비트를 비교해 두 비트 다 일 때만 , 나머지의 경우는 이다.
- 다음은 예시이다. \ \begin{array}{rcl} 0101\_2 & = & 5 \\\ \\& \ 0011\_2 & = & 3 \\\ \hline 0001\_2 & = & 1 \end{array}
-
bitwise 연산()은 두 수의 각 비트마다 다음과 같은 연산을 진행한다.
- 같은 자릿수의 비트를 비교해 두 비트 다 일 때만 , 나머지의 경우는 이다.
- 다음은 예시이다. \ \begin{array}{rcl} 0110\_2 & = & 6 \\\ \ | \ 1100\_2 & = & 12 \\\ \hline 1110\_2 & = & 14 \end{array}