A. Be Positive

time limit per test

1 second

memory limit per test

256 megabytes

Given an array a of n elements, where each element is equal to −1, 0, or 1. In one operation, you can choose an index i and increase ai by 1 (that is, assign ai:=ai+1). Operations can be performed any number of times, choosing any indices.

The goal is to make the product of all elements in the array strictly positive with the minimum number of operations, that is, a1⋅a2⋅a3⋅...⋅an>0. Find the minimum number of operations.

It is guaranteed that this is always possible.

Input

Each test consists of several test cases.

The first line contains one integer t (1≤t≤104) --- the number of test cases. The description of the test cases follows.

The first line of each test case contains one integer n (1≤n≤8) --- the length of the array a.

The second line contains n integers a1,a2,...,an, where −1≤ai≤1 --- the elements of the array a.

Output

For each test case, output one integer --- the minimum number of operations required to make the product of the elements in the array strictly positive.

Example

Input

Copy

复制代码

3

3

-1 0 1

4

-1 -1 0 1

5

-1 -1 -1 0 0

Output

Copy

复制代码

3

1

4

Note

In the first test case: from −1,0,1, you can obtain 1,1,1 in 3 operations.

In the second test case: it is enough to perform 0→1 (1 operation). In the resulting array a=−1,−1,1,1, the product of all elements is 1.

In the third test case: turning two zeros into ones (2 operations), and one −1 into 1 (another 2 operations), for a total of 4.

解题说明:水题,分别统计出-1、0的次数,然后判断即可,0肯定需要变成1,-1如果出现奇数次肯定需要变成1。

cpp 复制代码
#include<stdio.h>

void main() 
{
	int t;
	scanf("%d", &t);
	while (t--) 
	{
		int c = 0, k = 0;
		int a;
		scanf("%d", &a);
		int b[9];
		for (int i = 0; i < a; i++) 
		{
			scanf("%d", &b[i]);
		}
		for (int i = 0; i < a; i++)
		{
			if (b[i] == 0)
			{
				c = c + 1;
			}
			if (b[i] < 0)
			{
				k = k + 1;
			}
		}
		if (k % 2 != 0)
		{
			printf("%d\n", c + 2);
		}
		else
		{
			printf("%d\n", c);
		}
	}
	return 0;
}
相关推荐
那年窗外下的雪.7 分钟前
AIDC 学习日志|第 22 天|All-Active/Single-Active 故障演练设计
服务器·网络·学习·算法·哈希算法
wzdark1 小时前
基于启发式搜索的最优路径规划算法研究4
算法
l1t1 小时前
用superpi、tinypi、tpi等工具计算圆周率的比较
c语言·算法
a187927218311 小时前
【算法】链表(二):链表上的双指针——变速、异链与定距,和一份路程账本
数据结构·算法·leetcode·链表·go·指针·环形链表
2601_958352902 小时前
还要写 AEC 算法?0 代码 + 6 个引脚,F-18 让通话清晰度提升 300%
人工智能·算法·降噪消回音
happyprince2 小时前
03-regmix-深刻观-哲学与升华
算法
一路向阳~负责的男人2 小时前
运动控制算法收录
算法
czt_java2 小时前
5个核心位运算公式
算法
Doubbbbbbble云3 小时前
区间合并问题的常见算法模式与优化思路4
java·数据结构·算法
David猪大卫3 小时前
【C++修炼】哈希表的实现
数据结构·c++·笔记·学习·算法·哈希算法·散列表