하나 더하기
시간 제한2초메모리 제한1024 MB
2^60 미만의 정수 n개를 XOR로 하나씩 합치는 과정에서, 한 묶음의 값에 1을 한 번 더합니다. 최종으로 남는 값의 최댓값을 구합니다.
문제
정수 이 주어진다. 다음 연산을 정확히 번 수행한다.
- 수열에서 두 수 와 를 골라 지우고, 값이 인 수를 새로 추가한다.
이 연산만으로는 지루하니, 원하는 순간에 수 하나를 골라 1을 더할 수 있다. 1을 더하는 연산은 정확히 한 번 해야 한다.
과정이 끝나면 수열에는 수가 하나만 남는다. 그 수의 최댓값을 구하라.
입력
첫째 줄에 정수 ()이 주어진다.
둘째 줄에 정수 ()이 주어진다.
출력
남은 수의 최댓값을 한 줄에 출력한다.
힌트
첫 번째 예제에서 최적 전략은 다음과 같다.
- 1과 2를 고른다: [1, 2, 1, 2]에서 [1, 2, 3]
- 1과 2를 고른다: [1, 2, 3]에서 [3, 3]
- 3에 1을 더한다: [3, 3]에서 [3, 4]
- 3과 4를 고른다: [3, 4]에서 [7]