Add Plus Minus Sign (Codeforces 1774A)
Tags: Math, constructive algorithms

AquaMoon has a string $$$a$$$ consisting of only $$$0$$$ and $$$1$$$. She wants to add $$$+$$$ and $$$-$$$ between all pairs of consecutive positions to make the absolute value of the resulting expression as small as possible. Can you help her?

Input: The first line contains a single integer $$$t$$$ ($$$1 \leq t \leq 2\,000$$$)  – the number of test cases. The description of test cases follows.The first line of each test case contains a single integer $$$n$$$ ($$$2 \leq n \leq 100$$$) — the length of $$$a$$$.The second line of each test case contains a string $$$a$$$ of length $$$n$$$, consisting of only $$$0$$$ and $$$1$$$.

Output: For each test case, output a string of length $$$n - 1$$$ consisting of $$$-$$$ and $$$+$$$ on a separate line. If there is more than one assignment of signs that produces the smallest possible absolute value, any of them is accepted.

Note: In the first test case, we can get the expression $$$1 - 1 = 0$$$, with absolute value $$$0$$$.In the second test case, we can get the expression $$$0 + 1 - 1 + 0 + 1 = 1$$$, with absolute value $$$1$$$.In the third test case, we can get the expression $$$1 + 0 + 0 + 0 - 1 = 0$$$, with absolute value $$$0$$$.

Sample Inputs:
3
2
11
5
01101
5
10001

Sample Outputs:
-
+-++
+++-

Solution (Python):
for _ in range(int(input())):
    input()
    s = input().replace('0', '-')
    n = s.count('1')
    print(s.replace('1', '+', n // 2).replace('1', '-', n - n // 2)[1:])

Solution (Python):
class Solution:

    def __init__(self):
        pass

    def solve(self):
        t = int(input())
        result = []
        for i in range(t):
            n = int(input())
            a = input()
            val = int(a[0])
            string = ''
            for char in a[1:]:
                if char == '0':
                    string += '+'
                elif val == 0:
                    string += '+'
                    val = 1
                else:
                    string += '-'
                    val = 0
            result.append(string)
        for x in result:
            print(x)
if __name__ == '__main__':
    sol = Solution()
    sol.solve()

Solution (Python):
for _ in range(int(input())):
    n = int(input())
    s = input()
    m = s.count('1')
    s = s[1:]
    s = s.replace('0', '-')
    s = s.replace('1', '-', m // 2)
    s = s.replace('1', '+')
    print(s)