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;
}
相关推荐
qq_423233902 分钟前
C++与Python混合编程实战
开发语言·c++·算法
TracyCoder12312 分钟前
LeetCode Hot100(19/100)——206. 反转链表
算法·leetcode
m0_7155753414 分钟前
分布式任务调度系统
开发语言·c++·算法
naruto_lnq36 分钟前
泛型编程与STL设计思想
开发语言·c++·算法
zxsz_com_cn1 小时前
设备预测性维护算法分类及优劣势分析,选型指南来了
算法·分类·数据挖掘
m0_748708051 小时前
C++中的观察者模式实战
开发语言·c++·算法
然哥依旧1 小时前
【轴承故障诊断】基于融合鱼鹰和柯西变异的麻雀优化算法OCSSA-VMD-CNN-BILSTM轴承诊断研究【西储大学数据】(Matlab代码实现)
算法·支持向量机·matlab·cnn
qq_537562672 小时前
跨语言调用C++接口
开发语言·c++·算法
Tingjct2 小时前
【初阶数据结构-二叉树】
c语言·开发语言·数据结构·算法