Make A Equal to B (Codeforces 1736A)
Tags: Greedy, sortings

You are given two arrays $$$a$$$ and $$$b$$$ of $$$n$$$ elements, each element is either $$$0$$$ or $$$1$$$.You can make operations of $$$2$$$ kinds.   Pick an index $$$i$$$ and change $$$a_i$$$ to $$$1-a_i$$$.  Rearrange the array $$$a$$$ however you want. Find the minimum number of operations required to make $$$a$$$ equal to $$$b$$$.

Input: Each test contains multiple test cases. The first line contains a single integer $$$t$$$ ($$$1 \leq t \leq 400$$$) — the number of test cases. Description of the test cases follows.The first line of each test case contains a single integer $$$n$$$ ($$$1 \leq n \leq 100$$$) — the length of the arrays $$$a$$$ and $$$b$$$.The second line of each test case contains $$$n$$$ space-separated integers $$$a_1,a_2,\ldots,a_n$$$ ($$$a_i$$$ is $$$0$$$ or $$$1$$$), representing the array $$$a$$$.The third line of each test case contains $$$n$$$ space-separated integers $$$b_1,b_2,\ldots,b_n$$$ ($$$b_i$$$ is $$$0$$$ or $$$1$$$), representing the array $$$b$$$.

Output: For each test case, print the minimum number of operations required to make $$$a$$$ equal to $$$b$$$.

Note: In the first case, we need only one operation: change $$$a_1$$$ to $$$1-a_i$$$. Now $$$a = [0, 0]$$$ which is equal to $$$b$$$.In the second case, the optimal way is to rearrange $$$a$$$ to get the array $$$[0, 1, 11$$$. Now $$$a = [0, 0, 1]$$$ which is equal to $$$b$$$.In the second case, one of optimal ways would be to first change $$$a_3$$$ to $$$1 - a_3$$$, then rearrange $$$a$$$.In the third case, no operation is needed.In the fourth case, the optimal way is to rearrange $$$a$$$ to get the array $$$[0, 1, 1, 0]$$$.

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

Sample Outputs:
1
2
0
1
1

Solution (Python):
for _ in range(int(input())):
    n = int(input())
    h = [int(ii) for ii in input().split()]
    i = [int(ii) for ii in input().split()]
    if h.count(1) == i.count(1) and h.count(0) == i.count(0):
        if h == i:
            print(0)
        else:
            print(1)
    else:
        h1 = h.count(1)
        i1 = i.count(1)
        diff = abs(h1 - i1)
        f = 0
        ans = 0
        if h1 < i1:
            for k in range(n):
                if h.count(1) == i.count(1):
                    f = 1
                    break
                if h[k] == 0 and h[k] != i[k]:
                    h[k] = 1
                    ans += 1
        else:
            for k in range(n):
                if h.count(1) == i.count(1):
                    f = 1
                    break
                if h[k] == 1 and h[k] != i[k]:
                    h[k] = 0
                    ans += 1
        if h == i:
            print(ans)
        else:
            print(ans + 1)

Solution (Python):
for _ in range(int(input())):
    n = int(input())
    h = [int(ii) for ii in input().split()]
    i = [int(ii) for ii in input().split()]
    if h.count(1) == i.count(1) and h.count(0) == i.count(0):
        if h == i:
            print(0)
        else:
            print(1)
    else:
        h1 = h.count(1)
        i1 = i.count(1)
        diff = abs(h1 - i1)
        f = 0
        ans = 0
        if h1 < i1:
            for k in range(n):
                if h.count(1) == i.count(1):
                    f = 1
                    break
                if h[k] == 0 and h[k] != i[k]:
                    h[k] = 1
                    ans += 1
        else:
            for k in range(n):
                if h.count(1) == i.count(1):
                    f = 1
                    break
                if h[k] == 1 and h[k] != i[k]:
                    h[k] = 0
                    ans += 1
        if h == i:
            print(ans)
        else:
            print(ans + 1)

Solution (Python):
for t in range(int(input())):
    N = int(input())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    count_1_a = 0
    count_1_b = 0
    for i in range(N):
        if a[i] == 1:
            count_1_a += 1
        if b[i] == 1:
            count_1_b += 1
    if count_1_a == count_1_b:
        if a == b:
            print(0)
        else:
            print(1)
    else:
        req_operations = abs(count_1_a - count_1_b)
        diff = 0
        for k in range(N):
            if a[k] != b[k]:
                diff += 1
        if diff == req_operations:
            print(req_operations)
        else:
            print(req_operations + 1)