Guy-Manuel and Thomas have an array a of n integers [a1,a2,…,an].
In one step they can add 1 to any element of the array. Formally, in one step
they can choose any integer index i (1≤i≤n) and do ai:=ai+1.
If either the sum or the product of all elements in the
array is equal to zero, Guy-Manuel and Thomas do not mind to do this operation
one more time.
What is the minimum number of steps they need to do to
make both the sum and the product of all elements in the array different from
zero? Formally, find the minimum number of steps to make a1+a2+ … +an≠0 and
a1⋅a2⋅ … ⋅an≠0.
Input Format
Each test contains multiple test cases.
The first line contains the number of test cases t
(1≤t≤103). The description of the test cases follows.
The first line of each test case contains an integer n
(1≤n≤100) — the size of the array.
The second line of each test case contains n integers
a1,a2,…,an (−100≤ai≤100) — elements of the array .
Constraints
time limit per test1 second memory limit per test256
megabytes
Output Format
For each test case, output the minimum number of steps
required to make both sum and product of all elements in the array different
from zero.
Sample Input 0
4
3
2 -1 -1
4
-1 0 0 1
2
-1 2
3
0 -2 1
Sample Output 0
1
2
3
2
Explanation 0
In the first test case, the sum is 0. If we add 1 to the
first element, the array will be [3,−1,−1], the sum will be equal to 1 and the
product will be equal to 3.
In the second test case, both product and sum are 0. If
we add 1 to the second and the third element, the array will be [−1,1,1,1], the
sum will be equal to 2 and the product will be equal to −1. It can be shown
that fewer steps can't be enough.
In the third test case, both sum and product are
non-zero, we don't need to do anything.
In the fourth test case, after adding 1 twice to the
first element the array will be [2,−2,1], the sum will be 1 and the product
will be −4.
Solution:
def MinStep(a, n):
positive = 0;
negative = 0;
zero = 0;
step = 0;
for i in range(n):
if (a[i] == 0):
zero += 1;
elif (a[i] <
0):
negative +=
1;
step = step
+ (-1 - a[i]);
else:
positive +=
1;
step = step
+ (a[i] - 1);
if (negative % 2 ==
0):
step = step +
zero;
else:
if (zero >
0):
step = step
+ zero;
else:
step = step + 2;
return step;
p=int(input())
for w in range(0,p):
n=int(input())
a=list(map(int,input().split(" ")))
print(MinStep(a, n));

0 Comments