#P8826. [传智杯 #3 初赛] 游戏(征集数据)

[传智杯 #3 初赛] 游戏(征集数据)

题目描述

清蒸鱼是一个从未被击败的炽蓝仙野游戏者。有一天他遇到了这么一个游戏:

给定一个长度为 nn 的数组 aa。同时定义 count(x)count(x)xx 在二进制下的 11 的个数。

现在清蒸鱼每次可以进行如下两种操作:

  • 选择两个数 ai,aja_i, a_j,并且必须满足 count(aixoraj)=1count(a_i \operatorname{xor} a_j)=1,将它们中的任意一个从数组中消去,代价为 C1C_1

  • 选择两个数 ai,aja_i, a_j,并且必须满足 count(aixoraj)>1count(a_i \operatorname{xor} a_j) > 1,将它们中的任意一个从数组中消去,代价为 C2C_2

现在你想知道,最少付出多少的代价,能让这个数组被消到只剩一个数。

输入格式

第一行一个整数 nn,表示数组大小。
第二行两个整数 C1,C2C_1, C_2,意义如题所示。
第三行共 nn 个整数,描述了数组 aa

输出格式

一行一个整数,表示最小代价。

4
5 10
1 2 3 4
20

提示

对于 20%20\% 的数据,满足 n=10n = 10
对于另外 20%20\% 的数据,满足 aa 中的元素为一个 [1,n][1, n] 的排列;
对于 100%100\% 的数据,满足 1n1041 \leq n \leq {10}^41C1,C2,a1091\le C_1, C_2, a \le {10}^9aa 中的元素互不相同。