#abc291g. [abc291_g]OR Sum

[abc291_g]OR Sum

问题描述

有长度为NN的序列 A=(A0,A1,ldots,AN1)A=(A_0,A_1,\\ldots,A_{N-1})B=(B0,B1,ldots,BN1)B=(B_0,B_1,\\ldots,B_{N-1})
Takahashi可以对AA执行以下操作任意次数(可能为零):

  • 对序列AA进行左循环移位。换句话说,用A'_i=A_{(i+1)\\% N}替换AA,其中xx\\% N表示xx除以NN的余数。

Takahashi的目标是最大化 displaystylesumi=0N1(AiBi)\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i),其中 xyx|y 表示 xxyy 的按位逻辑和(按位或)。

找出可能的最大值 displaystylesumi=0N1(AiBi)\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)

什么是按位逻辑和(按位或)? 逻辑和(或运算)是一种对两个一位整数(0011)的运算,定义如下表:
**按位逻辑和(按位或)**是将逻辑和应用于每个位上的运算。

xx

yy

xyx|y

00

00

00

00

11

11

11

00

11

11

11

11

如果至少有一个位 xxyy11,则逻辑和为 11。只有当它们都是 00 时,逻辑和才为 00

示例
0110 | 0101 = 0111```

### 约束条件

*   $2 \\leq N \\leq 5\\times 10^5$
*   $0\\leq A_i,B_i \\leq 31$
*   输入中的所有值都是整数。

* * *

### 输入

输入以以下格式从标准输入给出:

$N$
$A_0$ $A_1$ $\\ldots$ $A_{N-1}$
$B_0$ $B_1$ $\\ldots$ $B_{N-1}$

### 输出

打印可能的最大值 $\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)$。

* * *

### 示例输入 1

```plain
3
0 1 3
0 2 3

示例输出 1

8

如果 Takahashi 不执行操作,AA 保持为 (0,1,3)(0,1,3),我们有 $\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)=(0|0)+(1|2)+(3|3)=0+3+3=6$;
如果他执行一次操作,使得 A=(1,3,0)A=(1,3,0),我们有 $\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)=(1|0)+(3|2)+(0|3)=1+3+3=7$;
如果他执行两次操作,使得 A=(3,0,1)A=(3,0,1),我们有 $\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)=(3|0)+(0|2)+(1|3)=3+2+3=8$。
如果他执行三次或更多次操作,AA 变为上述其中一个序列,因此可能的最大值 displaystylesumi=0N1(AiBi)\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)88,应该打印出来。


示例输入 2

5
1 6 1 4 3
0 6 4 0 1

示例输出 2

23

当他执行三次操作时,将 A=(4,3,1,6,1)A=(4,3,1,6,1),值最大,
其中 $\\displaystyle\\sum_{i=0}^{N-1} (A_i|B_i)=(4|0)+(3|6)+(1|4)+(6|0)+(1|1)=4+7+5+6+1=23$。