시간 제한 메모리 제한 제출 정답 맞은 사람 정답 비율
2 초 128 MB 3 2 2 100.000%

문제

어떤 배열 A가 주어졌을 때, 이 배열과 크기가 같고, 배열에 속하는 모든 원소 X가 low <= X <= high이며, 새로 바꾼 배열을 B라고 했을 때, A[i]와 B[i]의 비트 차이가 최소인 배열 B를 출력하는 프로그램을 작성하시오.

만약 B가 여러개일 경우에는 사전순으로 먼저오는 것을 출력한다.

어떤 수 a와 b의 비트 차이를 계산하는 방법은, a를 이진수로 바꾸고, b도 이진수로 바꾼다. 만약 두 수의 길이가 서로 다르다면, 길이가 같아질 때 까지 짧은 이진수의 왼쪽에 0으로 채운다. 그 뒤에 각자리의 비트가 차이나는 것의 개수를 채우면 된다.

입력

첫째 줄에 첫째 줄에 A의 크기 N과 low high가 입력으로 들어온다. low는 2147483647보다 작거나 같은 음이 아닌 정수이고, high는 2147483647보다 작거나 같고, low보다 크거나 같은 음이 아닌 정수이다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 배열 A의 원소가 입력으로 들어온다. 각 원소는 2147483647보다 작거나 같은 음이 아닌 정수이다.

출력

첫째 줄에 배열 B의 원소를 공백을 사이에 두고 출력한다.

예제 입력

1 101 105
71

예제 출력

103

힌트

출처