시간 제한메모리 제한제출정답맞힌 사람정답 비율
2 초 128 MB1067787.500%

문제

어떤 배열 A가 주어졌을 때, 이 배열과 크기가 같고, 배열에 속하는 모든 원소 X가 low <= X <= high이며, 새로 바꾼 배열을 B라고 했을 때, A[i]와 B[i]의 비트 차이가 최소인 배열 B를 출력하는 프로그램을 작성하시오. 만약 B가 여러개일 경우에는 사전순으로 먼저오는 것을 출력한다.

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

입력

첫째 줄에 A의 크기 N과 두 정수 low, high가 주어진다. 둘째 줄에는 배열 A의 원소 Ai가 공백으로 구분되어 주어진다.

출력

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

제한

  • 1 ≤ N ≤ 50
  • 0 ≤ low ≤ high ≤ 230 - 1
  • 0 ≤ Ai ≤ 230 - 1

예제 입력 1

1 101 105
71

예제 출력 1

103

예제 입력 2

5 98 304
12 65 302 1 1000000

예제 출력 2

140 193 302 129 192

예제 입력 3

1 16 16
1000000

예제 출력 3

16

예제 입력 4

1 83 92
48

예제 출력 4

84

예제 입력 5

3 1 4
5 6 7

예제 출력 5

1 2 3

출처