Swaps Again (Codeforces 1365F)
Tags: Implement, sortings

Ayush, Ashish and Vivek are busy preparing a new problem for the next Codeforces round and need help checking if their test cases are valid.Each test case consists of an integer $$$n$$$ and two arrays $$$a$$$ and $$$b$$$, of size $$$n$$$. If after some (possibly zero) operations described below, array $$$a$$$ can be transformed into array $$$b$$$, the input is said to be valid. Otherwise, it is invalid.An operation on array $$$a$$$ is:   select an integer $$$k$$$ $$$(1 \le k \le \lfloor\frac{n}{2}\rfloor)$$$  swap the prefix of length $$$k$$$ with the suffix of length $$$k$$$ For example, if array $$$a$$$ initially is $$$\{1, 2, 3, 4, 5, 6\}$$$, after performing an operation with $$$k = 2$$$, it is transformed into $$$\{5, 6, 3, 4, 1, 2\}$$$.Given the set of test cases, help them determine if each one is valid or invalid.

Input: The first line contains one integer $$$t$$$ $$$(1 \le t \le 500)$$$ — the number of test cases. The description of each test case is as follows.The first line of each test case contains a single integer $$$n$$$ $$$(1 \le n \le 500)$$$ — the size of the arrays.The second line of each test case contains $$$n$$$ integers $$$a_1$$$, $$$a_2$$$, ..., $$$a_n$$$ $$$(1 \le a_i \le 10^9)$$$ — elements of array $$$a$$$.The third line of each test case contains $$$n$$$ integers $$$b_1$$$, $$$b_2$$$, ..., $$$b_n$$$ $$$(1 \le b_i \le 10^9)$$$ — elements of array $$$b$$$.

Output: For each test case, print "Yes" if the given input is valid. Otherwise print "No".You may print the answer in any case.

Note: For the first test case, we can swap prefix $$$a[1:1]$$$ with suffix $$$a[2:2]$$$ to get $$$a=[2, 1]$$$.For the second test case, $$$a$$$ is already equal to $$$b$$$.For the third test case, it is impossible since we cannot obtain $$$3$$$ in $$$a$$$.For the fourth test case, we can first swap prefix $$$a[1:1]$$$ with suffix $$$a[4:4]$$$ to obtain $$$a=[2, 2, 3, 1]$$$. Now we can swap prefix $$$a[1:2]$$$ with suffix $$$a[3:4]$$$ to obtain $$$a=[3, 1, 2, 2]$$$.For the fifth test case, it is impossible to convert $$$a$$$ to $$$b$$$.

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

Sample Outputs:
yes
yes
No
yes
No

Solution (Python):
import sys
from collections import Counter
input = lambda : sys.stdin.readline().strip()

def solve():
    n = int(input())
    a = list(map(int, input().split()))
    b = list(map(int, input().split()))
    if n & 1 and a[n // 2] != b[n // 2]:
        print('NO')
        return
    mp = Counter()
    for i in range(n // 2):
        x = a[i]
        y = a[n - 1 - i]
        if x > y:
            (x, y) = (y, x)
        mp[x, y] += 1
    for i in range(n // 2):
        x = b[i]
        y = b[n - 1 - i]
        if x > y:
            (x, y) = (y, x)
        if mp[x, y] > 0:
            mp[x, y] -= 1
        else:
            print('NO')
            return
    print('YES')
for _ in range(int(input())):
    solve()

Solution (Python):
(q, f) = (lambda : list(map(int, input().split())), lambda x: sorted(zip(x, x[::-1])))
for _ in range(q()[0]):
    (q(), print('yneos'[f(q()) != f(q())::2]))

Solution (Python):
for i in range(int(input())):
    n = int(input())
    s1 = list(map(int, input().split()))
    s2 = list(map(int, input().split()))
    d1 = s1[::-1]
    d2 = s2[::-1]
    if sorted(zip(s1, d1)) == sorted(zip(s2, d2)):
        print('Yes')
    else:
        print('No')