Description
给你一个数组 a,一共有 n 个元素,其中每个元素分别为 a1,a2,a3,⋯,an
现在你可以执行以下操作无限次:
- 选择两个下标 i,j 同时选择一个数字 k,交换 ai,aj 的二进制表示下从右往左第 k 位。
例如 ai=4=(100)2,aj=3=(11)2,我们交换两个数字二进制下从右往左第 0 位,得到 ai=(101)2=5,aj=(10)2=2
现在请你求 max(a)−min(a) 的最大值,其中 max(a) 为数组 a 的最大值,min(a) 为数组 a 的最小值。
第一行输入一个整数 n
接下来一行输入 n 个空格隔开的数字 ai
Output
输出可能的最大答案。
Samples
3
1 0 1
1
5
1 2 3 4 5
7
Sample 1 explain
我们不需要进行任何运算,max(a)−min(a) 的最大值是 1−0=1
Sample 2 explain
初始数组为 a = [1, 2, 3 ,4 ,5]
我们可以交换 a2,a5 的二进制从右往左第 1 位。
交换前:a2=(10)2=2,a5=(101)2=5
交换后:a2=(00)2=0,a5=(111)2=7
此时数组 a = [1, 0, 3, 4, 7]
可以证明不需要再进行其余操作,此时答案为 7−0=7
Limitation
3≤n≤105,0≤ai≤109