谁敢动资本的蛋糕
题号:NC301639
时间限制:C/C++/Rust/Pascal 2秒,其他语言4秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}你们排挤我很正常,毕竟我动了资本的蛋糕、披萨、汉堡、馄饨、火锅、炸鱼薯条、烤鸭、鸡排、臭豆腐、马卡龙、红烧肉……
\hspace{15pt}在这个充满美食与资本博弈的世界里,加藤翔子凭借敏锐的直觉,擅长在不惊动资本的情况下“动”走各种美味:蛋糕、披萨、汉堡、馄饨,乃至火锅、炸鱼薯条、烤鸭、…… 每一次出手,她都以最小的代价,确保资本无法迅速反扑(给加藤翔子做局)。
\hspace{15pt}现有 n 种美食,它们各自被赋予一个非负整数,代表资本对它们的关注度:a = \{a_1, a_2, \dots, a_n\}。翔子会将这些食物全部带走,但是翔子只有一个袋子,也就是说她只能带走一个食物,于是她必须将这些美食两两融合。
\hspace{15pt}她会将所有的食物两两融合,经过恰好 n-1 次操作,最终只留下一个“终极美食”。每一次融合,都会引发资本的注意,代价如下:
\hspace{23pt}\bullet\,任选数组中的两个美食 (x,y),将它们从数组中删除,并将它们关注度的异或结果 a_x \operatorname{xor} a_y 插入数组,同时支付“合并成本” \mathrm{cost}(x,y) = 2 \times (a_x \operatorname{and} a_y)
\hspace{15pt}恰好进行 n-1 次操作后,数组中只剩下一个“终极美食”。
\hspace{15pt}请你计算并输出,让总合并成本最小化时的最小总成本。

【名词解释】
\hspace{15pt}\operatorname{xor}:指位运算中的按位异或(Bitwise XOR),对两个整数的二进制表示按位进行异或运算。如果您需要更多位运算相关的知识,可以参考 OI-Wiki的相关章节
\hspace{15pt}\operatorname{and}:指位运算中的按位与(Bitwise AND),对两个整数的二进制表示按位进行与运算。

输入描述:

\hspace{15pt}第一行输入一个整数 n \left ( 1 \le n \le 2\times10^5 \right ),表示美食个数。
\hspace{15pt}第二行输入 n 个整数 a_1, a_2, \dots, a_n\left(0 \le a_i \le 10^{10}\right),表示美食的资本关注度。

输出描述:

\hspace{15pt}输出一个整数,表示在最优合并策略下的最小总合并成本。
示例1

输入

复制
4
1 2 3 5

输出

复制
6

说明

\hspace{15pt}在这个样例中,其中一种最优合并策略为(注意,这里的位置编号仅用于方便解释,无需强制遵守,下标从 1 开始):
\hspace{23pt}\bullet\,第一步:选择第二和第三个美食,合成得到 2 \operatorname{xor} 3 = 1,放入到数组的最后,数组变成 a = \{1, 1, {\color{orange}{5}}\},代价为 2 \times (2 \operatorname{and} 3) = 4
\hspace{23pt}\bullet\,第二步:选择新的第一个和新的第三个美食,合成得到 1 \operatorname{xor} 5 = 4,放入到数组的最后,数组变成 a = \{1,{\color{orange}{4}}\},代价为 2 \times (1 \operatorname{and} 5) = 2
\hspace{23pt}\bullet\,第三步:选择新的第一个和新的第二个美食,合成得到 1 \operatorname{xor} 4 = 5,数组变成 a = \{{\color{orange}{5}}\},代价为 2 \times (1 \operatorname{and} 4) = 0
\hspace{15pt}最终输出 4 + 2 + 0 = 6