Balanced Array (Codeforces 1343B)
Tags: Math, constructive algorithms

You are given a positive integer $$$n$$$, it is guaranteed that $$$n$$$ is even (i.e. divisible by $$$2$$$).You want to construct the array $$$a$$$ of length $$$n$$$ such that:   The first $$$\frac{n}{2}$$$ elements of $$$a$$$ are even (divisible by $$$2$$$);  the second $$$\frac{n}{2}$$$ elements of $$$a$$$ are odd (not divisible by $$$2$$$);  all elements of $$$a$$$ are distinct and positive;  the sum of the first half equals to the sum of the second half ($$$\sum\limits_{i=1}^{\frac{n}{2}} a_i = \sum\limits_{i=\frac{n}{2} + 1}^{n} a_i$$$). If there are multiple answers, you can print any. It is not guaranteed that the answer exists.You have to answer $$$t$$$ independent test cases.

Input: The first line of the input contains one integer $$$t$$$ ($$$1 \le t \le 10^4$$$) — the number of test cases. Then $$$t$$$ test cases follow.The only line of the test case contains one integer $$$n$$$ ($$$2 \le n \le 2 \cdot 10^5$$$) — the length of the array. It is guaranteed that that $$$n$$$ is even (i.e. divisible by $$$2$$$).It is guaranteed that the sum of $$$n$$$ over all test cases does not exceed $$$2 \cdot 10^5$$$ ($$$\sum n \le 2 \cdot 10^5$$$).

Output: For each test case, print the answer — "NO" (without quotes), if there is no suitable answer for the given test case or "YES" in the first line and any suitable array $$$a_1, a_2, \dots, a_n$$$ ($$$1 \le a_i \le 10^9$$$) satisfying conditions from the problem statement on the second line.


Sample Inputs:
5
2
4
6
8
10

Sample Outputs:
NO
YES
2 4 1 5
NO
YES
2 4 6 8 1 3 5 11
NO

Solution (Python):
def balanced(n):
    if n % 4 != 0:
        return 'NO'
    else:
        odd = []
        even = []
        (sum1, sum2) = (0, 0)
        for i in range(2, n + 1, 2):
            even.append(i)
            sum1 += i
        for i in range(1, n - 2, 2):
            odd.append(i)
            sum2 += i
        array = even + odd
        sum_tot = sum1 - sum2
        return 'YES\n' + ' '.join(map(str, array)) + ' ' + str(sum_tot)
t = int(input())
for _ in range(t):
    n = int(input())
    print(balanced(n))

Solution (Python):
def consarray(size):
    if size % 4 != 0:
        print('NO')
    else:
        even = [2 * i for i in range(1, size // 2 + 1)]
        odd = [2 * i - 1 for i in range(1, size // 2)]
        odd.append(sum(even) - sum(odd))
        comb = even + odd
        print('YES')
        ans = str(comb)[1:-1]
        ans = ans.replace(',', '')
        print(ans)
t = int(input())
ques = []
for i in range(t):
    ques.append(int(input()))
for ele in ques:
    consarray(ele)

Solution (Python):
out = []
for _ in range(int(input())):
    n = int(input())
    if n // 2 % 2 != 0:
        out.append('NO')
    else:
        out.append(f"YES\n{' '.join(map(str, list(range(2, n + 1, 2)) + list(range(1, n - 2, 2)) + [n // 2 - 1 + n]))}")
print('\n'.join(out))