페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#2821

발야구 슈퍼컵 1s 128MB

문제

해마다 열리는 발야구 슈퍼컵 대회는 전국에서 예선을 거친 1 ~ 2,000개의 팀들을 대상으로 토너먼트 방식으로 경기를 하여 우승팀을 가린다. 각 팀은 번호로 된 고유의 ID를 갖는다.

그런데 흥미와 관심을 높이기 위하여 운영되는 방식이 독특하다. 어느 두 팀이 경기를 할 경우 생성되는 상점은 두 팀의 ID를 XOR한 값이 된다. 이러한 상점을 모아 우승자가 모두 갖는다.

예를 들어 13번 팀과 20번 팀이 경기할 경우 상점은 25점이 된다.

  • 13를 이진수로 바꾼 값  : 01101

  • 20을 이진수로 바꾼 값  : 10100

XOR연산하면 11001이 되기 때문이다. (cf. XOR 연산은 십진수를 2진수로 바꾼 후 각 비트의 값이 서로 다르면 해당 비트의 값이 1, 같으면 해당 비트의 값이 0이 된다.)

 

주최 측에서는 상점이 높아지는 것이 슈퍼컵에 대한 관심과 인기가 높아지리라 생각하고 있다. 따라서 본선에 올라온 팀들에서 얻을 수 있는 상점들의 합의 최대값을 알고자 한다.

팀 수와 팀 ID번호가 주어질 때, 우승자가 얻게 되는 상점이 얼마인지 구하는 프로그램을 작성하시오.


입력

첫 행에 팀의 개수를 나타내는 정수 N이 입력된다.

이어서 N행에 걸쳐 각 팀의 ID가 입력된다.

[제약 조건]

  • 1 ≤ N ≤ 2,000

  • 각 팀의 ID는 고유하며, 범위는 1 \le ID \le 2,147,483,647 이다.


출력

가능한 상점들의 합의 최대값을 출력하시오.


예제

5
1
2
3
4
5
25

1st round (2 vs 5) [score: 7]

2nd round (3 vs 4) [score: 7]

3rd round (2 vs 4) [score: 6]

4th round (4 vs 1) [score: 5]



출처

USACO February 2015 Gold
로그인해야 코드를 작성할 수 있어요.