P19408 [CodeChef] MAKEARRAYODD
普及
题目描述

You are given an array A and an integer X. You are allowed to perform the following operation on the array:
Select two distinct indices i and j and set both A_{i} and A_{j} as $((A_{i} \oplus A_{j}) \mid X) simultaneously. Here \oplus$ and $\mid$ denote the [bitwise XOR] and [bitwise OR] operations respectively.

Find the minimum number of operations required to make all elements of the array odd. If it is not possible to do so, print -1 instead.

------ Input Format ------

  • The first line of input will contain a single integer T, denoting the number of test cases.
  • Each test case consists of two lines of input.
  • The first line of each test case contains two space-separated integers N, the size of the array and X.
  • The next line contains N space-separated integers denoting the elements of the array A.

------ Output Format ------

For each test case, output on a new line, the minimum number of operations required to make all elements of the array odd. If it is not possible to do so, print -1 instead.

------ Constraints ------

$1 ≤ T ≤ 10^{5}$
$2 ≤ N ≤ 10^{5}$
$0 ≤ X < 2^{30}$
$0 ≤ A_{i} < 2^{30}$
- The sum of $N$ over all test cases won't exceed $10^{5}$.

----- Sample Input 1 ------
2
3 6
5 7 9
5 4
2 3 4 17 9

----- Sample Output 1 ------
0
2
----- explanation 1 ------
Test case $1$: All elements are already odd. Thus, the number of operation required will be $0$.

Test case $2$: We can make all elements odd using $2$ operations -
- In first operation, we choose $i=1, j=5$.
Here, $(A_{i}\oplus A_{j})\mid X=(2 \oplus 9)\mid 4 = 11 \mid 4 = 15$. Thus, the new array becomes $[15,3,4,17,15]$.
- In second operation, we choose $i=4, j=3$.
Here, $(A_{i}\oplus A_{j})\mid X=(17 \oplus 4)\mid 4 = 21 \mid 4 = 21$. Thus, the new array becomes $[15,3,21, 21,15]$.

All elements of the array are odd now. It can be shown that we cannot achieve this in less than $2$ operations.

输入格式

见题面

输出格式

见题面

样例输入
2 3 6 5 7 9 5 4 2 3 4 17 9
样例输出
0 2