#222
Unrated
슈퍼볼
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

민수와 친구들은 매년 열리는 '슈퍼볼' 대회에 참가한다. 민수는 이 대회를 최대한 흥미진진하게 만들기 위해 토너먼트 대진표를 짜는 역할을 맡았다.

슈퍼볼에는 총 NN개의 팀이 참가한다. 각 팀은 다른 팀과 구별되는 11 이상 23012^{30}-1 이하의 고유한 정수 ID를 가진다. 슈퍼볼은 서바이벌 방식으로 진행된다. 매 경기마다 두 팀이 경기를 치르며, 민수는 두 팀 중 한 팀을 선택해 탈락시킨다. 탈락한 팀은 이후의 어떤 경기에도 참여할 수 없다. 마지막으로 한 팀만 남을 때까지 경기를 반복한다.

민수는 경기의 점수에 아주 특별한 규칙이 있다는 것을 발견했다. 어느 경기에서든 두 팀이 얻는 점수는 두 팀 ID의 비트 배타적 논리합(XOR) 연산 결과와 같다. 예를 들어, ID가 1212인 팀과 2020인 팀이 경기를 하면 2424점을 얻는다. (1220=2412 \oplus 20 = 24; 011002101002=11000201100_2 \oplus 10100_2 = 11000_2)

민수는 경기에서 얻는 점수가 높을수록 대회가 더 재미있어진다고 믿는다. 따라서 민수는 슈퍼볼에서 발생하는 모든 경기 점수의 합을 최대화하고 싶어 한다. 민수를 도와 가능한 점수 합의 최댓값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 팀의 수 NN이 주어진다. (1N20001 \le N \le 2\,000)

이어서 NN개의 줄에 각 팀의 ID가 한 줄에 하나씩 주어진다. 각 ID는 11 이상 23012^{30}-1 이하의 서로 다른 정수이다.

출력

슈퍼볼에서 얻을 수 있는 점수 합의 최댓값을 출력한다.

예제 입력 1

4
3
6
9
10

예제 출력 1

37
코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Unrated0명 투표
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.