E. XOR Inverse SOLUTION Codeforces Round #673 (Div. 2)

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.
 
Input
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
Output two integers: the minimum possible number of inversions in b, and the minimum possible value of x, which achieves those number of inversions.
 
Examples
inputCopy
4
0 1 3 2
outputCopy
1 0
inputCopy
9
10 7 9 10 7 5 5 3 5
outputCopy
4 14
inputCopy
3
8 10 3
outputCopy
0 8
Note
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:
 
i=2, j=3;
i=2, j=4;
i=3, j=4;
i=8, j=9.
In the third sample the selection of x=8 results in b: [0,2,11]. It has no inversions.
 

Leave a Comment

close
error: Content is protected !!
Free Udemy Courses and Hacking Resources Join Us on TelegramClick Here
+