#1456. “或”问题

“或”问题

题目描述

AA 最近在学习位运算相关知识,但是他遇到了一个问题,想委托你帮他解决一下

给定一个长度为 nn 的非负整数数组 a(a1,a2,ana (a_1,a_2 \ldots ,a_n) ,我可以执行以下操作不超过 nn 次:

选择 i,ji,j ,使得 1i,jn1\le i,j \le n , 任取一个 xx 使得 0x1090\le x \le 10^9 ,然后设置 ai=ai+x , aj=ajxa_i = a_i + x \ , \ a_j = a_j - x

我必须确保每次运算后所有 aia_i ( 1in1 \le i \le n) 都保持非负整数

我的目标是使运算后的 a1  a2  ana_1\ | \ a2\ | \ldots | \ a_n 最小

OR 运算逐位比较两个二进制数。在每个位上,如果至少有一个位是 11 ,那么结果就是 11 ;否则,就是 00

例如,二进制数 10=101010 = 1010 12=110012 = 1100OR 结果是 14=111014 = 1110

输入格式

第一行包含一个整数 nn ( 1n2×1051\le n\le 2\times 10^5 ),代表数组的长度。

第二行包含 nn 个非负整数 aia_i ( 0ai1090\le a_i\le 10^9 )。

输出格式

一行包含一个整数,代表答案,即最小化的 a1  a2    ana_1 \ | \ a_2 \ | \ \ldots \ | \ a_n 值。

输入样例

7
1 9 1 9 8 1 0

输出样例

5

提示

在本例中,一个可行的最终结果是 [5,5,5,5,5,4,0][5,5,5,5,5,4,0] ,它的最小结果等于 55 。可以证明没有更好的结果。

实现这一结果的一个可行方法是 $[1,9,1,9,8,1,0] \rightarrow [5,5,1,9,8,1,0] \rightarrow [5,5,5,5,8,1,0]$ [5,5,5,5,5,4,0]\rightarrow [5,5,5,5,5,4,0] ,总共需要 33 步。

限制与约定

对于30%30\%的样例 1n10001\le n\le 1000 0ai10000\le a_i\le 1000

对于100%100 \% 的样例 1n2×1050ai1091\le n\le 2\times 10^5,0\le a_i\le 10^9

  • 时间限制: 1s1 s
  • 空间限制: 256MB256 MB