题目描述 superbull.cpp
现在有N(1 <= N <= 2000)只蜗牛在玩 超级蜗牛 游戏。每只蜗牛有一个唯一的ID,ID范围是$ 1 ... 2 ^ {30}-1$。
超级蜗牛比赛是淘汰赛 - 每场比赛后,输者退赛,赢者继续留在比赛,直到只剩一队游戏结束。
输赢是蜗牛老师自己决定的,或者说结果可以任意决定!
比赛的积分规则十分奇葩:积分=第一队的ID$ xor$ 第二队的ID。c++ 的运算符为 ^ 。
比如,12队和20队打比赛,积分是24,因为$01100 xor 10100 = 11000$。
蜗牛老师认为,分越高越刺激。所以他想让总积分最高。请帮助蜗牛老师设计比赛。
输入格式 superbull.in
第一行包含一个整数N
以下N行包含N个队伍的ID。
输出格式 superbull.out
一行,一个整数,表示答案。
样例数据
input
4
3
6
9
10
output
37
输出详情:实现37的一种方法如下:
3 VS 9 ==》9胜,本场积分 3 XOR 9 = 10,目前队伍:6 9 10
6 VS 9 ==》6胜,本场积分 6 XOR 9 = 15,目前队伍:6 10
6 VS 10 ==》管他谁胜呢反正不用再比赛了,本场积分 6 XOR 10 = 12
总积分 10 + 15 + 12 = 37。
团队6和10面脱落,和队10胜。
拿下点的总数是(10)+(15)+(12)=
注:按位异或运算,由^符号通常表示,是进行逻辑异或运算的两个二进制整数的每个位置逐位操作。 规则如下 0 xor 0 = 0 0 xor 1 = 1 1 xor 0 = 1 1 xor 1 = 0 例如:
10100(十进制20)
XOR
01100(十进制12)
=======================
11000(十进制24)
数据规模与约定
时间限制:$1 \text {s}$
空间限制:$256 \text {MB}$