Grab the Candies (Codeforces 1807B)
Tags: Greedy, greedy

Mihai and Bianca are playing with bags of candies. They have a row $$$a$$$ of $$$n$$$ bags of candies. The $$$i$$$-th bag has $$$a_i$$$ candies. The bags are given to the players in the order from the first bag to the $$$n$$$-th bag. If a bag has an even number of candies, Mihai grabs the bag. Otherwise, Bianca grabs the bag. Once a bag is grabbed, the number of candies in it gets added to the total number of candies of the player that took it. Mihai wants to show off, so he wants to reorder the array so that at any moment (except at the start when they both have no candies), Mihai will have strictly more candies than Bianca. Help Mihai find out if such a reordering exists.

Input: The first line of the input contains an integer $$$t$$$ ($$$1 \leq t \leq 1000$$$) — the number of test cases.The first line of each test case contains a single integer $$$n$$$ ($$$1 \leq n \leq 100$$$) — the number of bags in the array.The second line of each test case contains $$$n$$$ space-separated integers $$$a_i$$$ ($$$1 \leq a_i \leq 100$$$) — the number of candies in each bag.

Output: For each test case, output "YES" (without quotes) if such a reordering exists, and "NO" (without quotes) otherwise.You can output the answer in any case (for example, the strings "yEs", "yes", "Yes" and "YES" will be recognized as a positive answer).

Note: In the first test case, Mihai can reorder the array as follows: $$$[4, 1, 2, 3]$$$. Then the process proceeds as follows:   the first bag has $$$4$$$ candies, which is even, so Mihai takes it — Mihai has $$$4$$$ candies, and Bianca has $$$0$$$.  the second bag has $$$1$$$ candies, which is odd, so Bianca takes it — Mihai has $$$4$$$ candies, and Bianca has $$$1$$$.  the third bag has $$$2$$$ candies, which is even, so Mihai takes it — Mihai has $$$6$$$ candies, and Bianca has $$$1$$$.  the fourth bag has $$$3$$$ candies, which is odd, so Bianca takes it — Mihai has $$$6$$$ candies, and Bianca has $$$4$$$.  Since Mihai always has more candies than Bianca, this reordering works.

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

Sample Outputs:
YES
NO
NO

Solution (Python):
def grab_the_candies(n, lst):
    mihia_lst = []
    bianca_lst = []
    for j in range(n):
        if lst[j] % 2 == 0:
            mihia_lst.append(lst[j])
        else:
            bianca_lst.append(lst[j])
    if sum(mihia_lst) > sum(bianca_lst):
        return 'YES'
    else:
        return 'NO'
t = int(input())
total = []
for i in range(t):
    n = int(input())
    lst = list(map(int, input().split()))
    total.append(grab_the_candies(n, lst))
for k in total:
    print(k)

Solution (Python):
for g in [*open(0)][2::2]:
    a = map(int, g.split())
    print('YNEOS'[sum((e * (1 - 2 * (e % 2)) for e in a)) <= 0::2])

Solution (Python):
def main():
    t = int(input())
    for i in range(t):
        n = input()
        row = list(map(int, input().split()))
        Mihai = 0
        Bob = 0
        for i in row:
            if i % 2 == 0:
                Mihai += i
            else:
                Bob += i
        if Mihai > Bob:
            print('YES')
        else:
            print('NO')
main()