Informatica Online Judge

  토너먼트 [2135 / 0857]

Time Limit(Test case) : 2000(ms)
Number of users who solved : 17   Total Tried : 25


The Champion of this Problem (C++) : gs16106 - 52ms / 956byte
My Best Submission (C++) : N/A

[koistudy.net (unkonwn)]

Background

매년 열리는 게임대회는 특별한 방법으로 토너먼트를 한다.

먼저 N 개의 팀에게 고유 팀 번호(K)를 할당하고, 오직 한 팀이 남을 때까지 토너먼트 방식으로 게임이 진행된다. 한번 진 팀은 더 이상 게임에 참가할 수 없다.

특별한 토너먼트 방식은 다음과 같다.

모든 게임에서 두 팀의 합계 점수는 항상 두 팀 고유 팀번호(K)의 XOR(Exclusive OR) 결과이다.
예를 들어, 3번 팀과 6번 팀이 경기를 한다면 0011 XOR 0110 = 0101 이므로, 그 경기에서 5점을 얻게 된다.

게임대회 주최자는 획득한 총 점수가 최대가 되도록 토너먼트를 설계하고자 한다.

Input

첫 번째 줄에는 게임에 참가한 팀 수(N)를 입력한다.
( 1 <= N <= 2,000 )
두 번째 줄부터는 팀 수만큼 고유 팀번호를 입력한다. ( 1<= K <= 2^31 –1 )

Output

토너먼트 결과 최대가 되는 총 점수를 출력한다.

IO Example

입력1
4
3 9 6 10

출력1
37

참고 : XOR(Exclusive OR)는 배타적 논리합으로 주어진 2개의 명제 가운데 1개만 참일 경우를 판단하는 논리 연산으로 ^ 연산자를 사용한다.

Submit : [C/C++] | [C++11] | [Obj-C] | [Java] | [Python]
Prob Analysis : [Problem Statistics] | [Solution]