Tokitsukaze and All Zero Sequence (Codeforces 1678A)
Tags: Implement, implementation

Tokitsukaze has a sequence $$$a$$$ of length $$$n$$$. For each operation, she selects two numbers $$$a_i$$$ and $$$a_j$$$ ($$$i \ne j$$$; $$$1 \leq i,j \leq n$$$).   If $$$a_i = a_j$$$, change one of them to $$$0$$$.  Otherwise change both of them to $$$\min(a_i, a_j)$$$. Tokitsukaze wants to know the minimum number of operations to change all numbers in the sequence to $$$0$$$. It can be proved that the answer always exists.

Input: The first line contains a single positive integer $$$t$$$ ($$$1 \leq t \leq 1000$$$) — the number of test cases.For each test case, the first line contains a single integer $$$n$$$ ($$$2 \leq n \leq 100$$$) — the length of the sequence $$$a$$$.The second line contains $$$n$$$ integers $$$a_1, a_2, \ldots, a_n$$$ ($$$0 \leq a_i \leq 100$$$) — the sequence $$$a$$$.

Output: For each test case, print a single integer — the minimum number of operations to change all numbers in the sequence to $$$0$$$.

Note: In the first test case, one of the possible ways to change all numbers in the sequence to $$$0$$$:In the $$$1$$$-st operation, $$$a_1 < a_2$$$, after the operation, $$$a_2 = a_1 = 1$$$. Now the sequence $$$a$$$ is $$$[1,1,3]$$$.In the $$$2$$$-nd operation, $$$a_1 = a_2 = 1$$$, after the operation, $$$a_1 = 0$$$. Now the sequence $$$a$$$ is $$$[0,1,3]$$$.In the $$$3$$$-rd operation, $$$a_1 < a_2$$$, after the operation, $$$a_2 = 0$$$. Now the sequence $$$a$$$ is $$$[0,0,3]$$$.In the $$$4$$$-th operation, $$$a_2 < a_3$$$, after the operation, $$$a_3 = 0$$$. Now the sequence $$$a$$$ is $$$[0,0,0]$$$.So the minimum number of operations is $$$4$$$.

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

Sample Outputs:
4
3
2

Solution (Python):
for s in [*open(0)][2::2]:
    n = len((a := s.split()))
    print(n + (-a.count('0') or len({*a}) == n))

Solution (Python):
from sys import stdin
input = lambda : stdin.buffer.readline().decode().strip()
for _ in range(int(input())):
    k = int(input())
    a = list(map(int, input().split()))
    cnt0 = a.count(0)
    duplicate = k - len(set(a))
    if cnt0 > 0:
        print(k - cnt0)
    elif duplicate > 0:
        print(k)
    else:
        print(k + 1)

Solution (Python):
for s in [*open(0)][2::2]:
    n = len((a := s.split()))
    print(n + (-a.count('0') or len({*a}) == n))