#P10524. [XJTUPC 2024] 循环移位

[XJTUPC 2024] 循环移位

题目描述

给定长度为 2n2^n 的数组 aia_i (0≤i<2n0 \leq i < 2^n),你可以进行任意次循环移位。

求 ∑i=02n−1ai⊕i\sum_{i=0}^{2^n-1} a_i \oplus i, ∑i=02n−1ai&i\sum_{i=0}^{2^n-1} a_i \& i,∑i=02n−1ai∣i\sum_{i=0}^{2^n-1} a_i | i 的最大值。其中 ⊕,&,∣\oplus, \&, | 分别代表按位异或,按位与,按位或。

对于一个长度为 mm 的数组 xix_i (0≤i<m0 \leq i < m),其进行循环移位的结果 xi′x'_i 为:

$$x'_i = \left\{ \begin{array}{ll} x_{i - 1} & i \neq 0 \\ x_{m - 1} & i = 0 \end{array}\right.$$

输入格式

输入第一行包含一个整数 nn (1≤n≤201 \leq n \leq 20),含义如题意所述。

接下来一行包含 2n2^n 个整数 aia_i (0≤ai<2n0 \leq a_i < 2^n),为给定的数组。

输出格式

输出一行三个整数,由空格隔开,为 ∑i=02n−1ai⊕i\sum_{i=0}^{2^n-1} a_i \oplus i,∑i=02n−1ai&i\sum_{i=0}^{2^n-1} a_i \& i,∑i=02n−1ai∣i\sum_{i=0}^{2^n-1} a_i | i 的最大值。

2
1 3 2 2

8 5 11

4
1 1 4 5 1 4 1 9 1 9 8 1 0 0 0 0

149 41 157