B를 0 이상 N-1 이하에서 골라 A의 모든 원소에 XOR한 뒤, i < j이고 C_i < C_j인 쌍의 최대 개수를 구한다.
정수 NNN과 길이가 MMM인 수열 AAA가 주어진다. NNN은 2의 거듭제곱이고, AAA의 각 원소는 000 이상 N−1N-1N−1 이하의 정수이다.
000 이상 N−1N-1N−1 이하의 정수 BBB를 하나 골라서 새로운 수열 CCC를 만들 수 있다. 모든 iii에 대해 Ci=Ai⊕BC_i = A_i \oplus BCi=Ai⊕B로 정한다. 여기서 ⊕\oplus⊕는 비트 단위 배타적 논리합(XOR)이다.
그 다음, CCC에서 i<ji < ji<j이면서 Ci<CjC_i < C_jCi<Cj인 (i,j)(i, j)(i,j) 쌍의 개수를 센다.
BBB를 적절히 골라서 이러한 쌍의 개수의 최댓값을 구하는 프로그램을 작성하시오.
첫째 줄에 NNN이 주어진다. (2≤N≤2302 \le N \le 2^{30}2≤N≤230, NNN은 2의 거듭제곱)
둘째 줄에 수열 AAA의 크기 MMM이 주어진다. (2≤M≤1310722 \le M \le 1310722≤M≤131072)
셋째 줄에 A1,A2,…,AMA_1, A_2, \dots, A_MA1,A2,…,AM이 공백으로 구분되어 주어진다. (0≤Ai≤N−10 \le A_i \le N-10≤Ai≤N−1)
첫째 줄에 i<ji < ji<j이면서 Ci<CjC_i < C_jCi<Cj인 (i,j)(i, j)(i,j) 쌍의 개수의 최댓값을 출력한다.
N=4N = 4N=4, A=[3,2,1,0,3,2]A = [3, 2, 1, 0, 3, 2]A=[3,2,1,0,3,2]일 때 B=3B = 3B=3을 고르면 C=[0,1,2,3,0,1]C = [0, 1, 2, 3, 0, 1]C=[0,1,2,3,0,1]이 된다. 이때 i<ji < ji<j이면서 Ci<CjC_i < C_jCi<Cj인 쌍은 8개이다.