#752. Even Array
Even Array
给你一个长度为 的数组 ,数组由非负整数构成。注意数组下标从 开始。
如果数组中每个位置的下标的奇偶性与该位置元素的奇偶性相同,则称该数组为 好数组。更严格地说,若对所有 ()都有:
则该数组为好数组,其中 表示 除以 的余数。
例如,数组 和 是好数组;数组 是坏数组,因为当 时:
二者奇偶性不同。
你可以进行如下操作:一次操作中,任选数组中的两个元素并交换它们(不要求相邻)。
请你求出将数组变成好数组所需的最少交换次数;如果无法做到,输出 。
输入格式
第一行一个整数 (),表示测试用例数量。
每个测试用例包含:
- 第一行一个整数 (),表示数组长度;
- 第二行 个整数 (),表示初始数组。
输出格式
对每个测试用例输出一行一个整数:将数组变为好数组的最少交换次数;若不可能则输出 。
说明
- 一次交换可以交换任意两个位置上的元素。
- 若存在解,最少交换次数等于“下标奇偶与元素奇偶不匹配的位置数量的一半”。
样例
输入
4
4
3 2 7 6
3
3 2 6
1
7
7
4 9 2 1 18 3 0
输出
2
1
-1
0