Integer Diversity (Codeforces 1616A)
Tags: Implement, implementation

You are given $$$n$$$ integers $$$a_1, a_2, \ldots, a_n$$$. You choose any subset of the given numbers (possibly, none or all numbers) and negate these numbers (i. e. change $$$x \to (-x)$$$). What is the maximum number of different values in the array you can achieve?

Input: The first line of input contains one integer $$$t$$$ ($$$1 \leq t \leq 100$$$): the number of test cases.The next lines contain the description of the $$$t$$$ test cases, two lines per a test case.In the first line you are given one integer $$$n$$$ ($$$1 \leq n \leq 100$$$): the number of integers in the array.The second line contains $$$n$$$ integers $$$a_1, a_2, \ldots, a_n$$$ ($$$-100 \leq a_i \leq 100$$$).

Output: For each test case, print one integer: the maximum number of different elements in the array that you can achieve negating numbers in the array.

Note: In the first example we can, for example, negate the first and the last numbers, achieving the array $$$[-1, 1, 2, -2]$$$ with four different values.In the second example all three numbers are already different.In the third example negation does not change anything.

Sample Inputs:
3
4
1 1 2 2
3
1 2 3
2
0 0

Sample Outputs:
4
3
1

Solution (Python):
for _ in [0] * int(input()):
    input()
    a = list(map(int, input().split()))
    ans = set()
    for i in a:
        ans.add(i) if i not in ans else ans.add(-i)
    print(len(ans))

Solution (Python):
from sys import stdin
t = int(input())
for _ in range(t):
    n = int(stdin.readline())
    nums = list(map(int, stdin.readline().split()))
    hm = {}
    for i in nums:
        if abs(i) in hm and hm[abs(i)] >= 1 and (i != 0):
            hm[abs(i)] = 2
        else:
            hm[abs(i)] = 1
    Sum = 0
    for i in hm:
        Sum += hm[i]
    print(Sum)

Solution (Python):
for s in [*open(0)][2::2]:
    t = set()
    for x in map(int, s.split()):
        t |= {(x, -x)[x in t]}
    print(len(t))