XOR Inverse SOLUTION
You are given an array a consisting of n non-negative integers. You have to choose a non-negative integer x and form a new array b of size n according to the following rule: for all i from 1 to n, bi=ai⊕x (⊕ denotes the operation bitwise XOR).
An inversion in the b array is a pair of integers i and j such that 1≤i<j≤n and bi>bj.
You should choose x in such a way that the number of inversions in b is minimized. If there are several options for x — output the smallest one.
First line contains a single integer n (1≤n≤3⋅105) — the number of elements in a.
Second line contains n space-separated integers a1, a2, …, an (0≤ai≤109), where ai is the i-th element of a.
Output two integers: the minimum possible number of inversions in b, and the minimum possible value of x, which achieves those number of inversions.
0 1 3 2
10 7 9 10 7 5 5 3 5
8 10 3
In the first sample it is optimal to leave the array as it is by choosing x=0.
In the second sample the selection of x=14 results in b: [4,9,7,4,9,11,11,13,11]. It has 4 inversions:
In the third sample the selection of x=8 results in b: [0,2,11]. It has no inversions.