Giải đấu vật
Hiếu và các bạn của anh ta đang tham gia giải đô vật trong lễ Tết truyền thống ở làng của anh, và Hiếu sẽ là người chịu trách nhiệm làm cho giải đấu thú vị nhất. Tổng cộng có \(N (1 \leq N \leq 2000)\) người tham gia giải đô vật. Mỗi ngươi được chỉ định một \(ID\) riêng biệt dưới dạng số nguyên trong khoảng \([1, 2^{30}-1]\) để phân biệt họ với người khác. Giải đô vật là một giải đấu loại trực tiếp - sau mỗi trận đấu, Hiếu chọn người nào đó sẽ bị loại khỏi giải, và người bị loại không thể tham gia thêm trận đấu nào nữa. Giải đấu kết thúc khi chỉ còn lại một người.
Hiếu đánh giá về điểm số trong các trận đấu bằng phép toán \(XOR\) \(ID\) hai người. Ví dụ, nếu người thứ nhất có \(ID\) là \(12\) và người thứ hai có \(ID\) là \(20\) , thì trận đấu sẽ có \(24\) điểm, vì \(01100\) \(XOR\) \(10100\) = \(11000\).
Hiếu tin rằng càng nhiều điểm được ghi trong một trận đấu thì trận đấu càng thú vị. Vì vậy, anh muốn chọn một loạt trận đấu sao cho tổng số điểm ghi được trong giải đô vật là cao nhất. Hãy giúp anh Hiếu tổ chức các trận đấu.
INPUT FORMAT
Dòng đầu tiên chứa số nguyên \(N\) duy nhất. \(N \)dòng tiếp theo chứa \(ID\) mỗi người.
OUTPUT FORMAT
In ra điểm số tối đa có thể đạt được
Ví dụ 1:
Input
4
3
6
9
10
Ouput
37
Một cách để đạt được 37 điểm như sau: Hiếu ghép người có ID 3 và ID 9, và quyết định rằng đô vật có ID 9 thắng, vì vậy các đô vật có ID 6, 9 và 10 còn lại trong giải đấu. Sau đó, anh ghép đô vật có ID 6 và ID 9, và để người có ID 6 thắng. Cuối cùng, các đô vật có ID 6 và 10 đối đầu, và người có ID 10 thắng. Tổng số điểm ghi được là (3 XOR 9) + (6 XOR 9) + (6 XOR 10) = 10 + 15 + 12 = 37.
Lời giải bài tập này: Tại đây
Group giải đáp thắc mắc: Lập trình 24h
Fanpage CLB: CLB lập trình Full House- Việt Nam
Youtube: CLB Lập Trình Full House
Comments