Array Coloring (Codeforces 1857A)
Tags: Math, greedy

You are given an array consisting of $$$n$$$ integers. Your task is to determine whether it is possible to color all its elements in two colors in such a way that the sums of the elements of both colors have the same parity and each color has at least one element colored.For example, if the array is [$$$1,2,4,3,2,3,5,4$$$], we can color it as follows: [$$$\color{blue}{1},\color{blue}{2},\color{red}{4},\color{blue}{3},\color{red}{2},\color{red}{3},\color{red}{5},\color{red}{4}$$$], where the sum of the blue elements is $$$6$$$ and the sum of the red elements is $$$18$$$.

Input: The first line contains an integer $$$t$$$ ($$$1 \le t \le 1000$$$) — the number of test cases.Each test case begins with a line containing an integer $$$n$$$ ($$$2 \le n \le 50$$$) — the length of the array $$$a$$$.The next line contains $$$n$$$ integers $$$a_1,a_2, \dots, a_n$$$ ($$$1 \le a_i \le 50$$$) — the elements of the array $$$a$$$.

Output: For each test case, output "YES" (without quotes) if it is possible to color the array in two colors in such a way that the sums of the elements of both colors have the same parity and each color has at least one element colored, and "NO" otherwise.You can output "Yes" and "No" in any case (for example, the strings "yES", "yes", and "Yes" will be recognized as correct answers).

Note: The first sample is described in the statement.In the second sample, there are only two colorings $$$[\color{blue}{4},\color{red}{7}]$$$ and $$$[\color{red}{4},\color{blue}{7}]$$$ , but in both cases the parity of sums is different.In the third sample, you can color $$$[\color{blue}{3},\color{blue}{9},\color{red}{8}]$$$ and $$$12$$$ and $$$8$$$ are both even.

Sample Inputs:
7
8
1 2 4 3 2 3 5 4
2
4 7
3
3 9 8
2
1 7
5
5 4 3 2 1
4
4 3 4 5
2
50 48

Sample Outputs:
YES
NO
YES
YES
NO
YES
YES

Solution (Python):
for _ in range(int(input())):
    n = int(input())
    lst = list(map(int, input().split()))
    c = 0
    for i in lst:
        if i % 2 != 0:
            c += 1
    print('YES' if c % 2 == 0 else 'NO')

Solution (Python):
def read_input():
    t = int(input())
    test_cases = []
    for _ in range(t):
        n = int(input())
        a = list(map(int, input().split()))
        test_cases.append((n, a))
    return test_cases

def solve(n, a):
    total_sum = sum(a)
    return 'YES' if total_sum % 2 == 0 else 'NO'

def main():
    test_cases = read_input()
    for (n, a) in test_cases:
        print(solve(n, a))
if __name__ == '__main__':
    main()

Solution (Python):
t = int(input())
for i in range(t):
    n = int(input())
    a = list(map(int, input().split()))
    odd = 0
    for e in a:
        if e % 2 == 1:
            odd += 1
    print('YES' if odd % 2 == 0 else 'NO')