AtCoder Beginner Contest 199 C - IPFL【Python】

https://atcoder.jp/contests/abc199/tasks/abc199_c

AtCoder ProblemsのRecommendationで Difficulty: 436、Solve Probability: 49%でした。

文字列Sを前半と後半の2つに分けてTi=2のときはそれらを入れ替えるとACとなりました。

N = int(input())
S = input()
Q = int(input())
S = list(S)
# 文字列を前半と後半に分ける
S1 = S[:N]
S2 = S[N:]
for i in range(Q):
    T, A, B = map(int, input().split())
    if T == 1:
        A -= 1
        B -= 1
        # 入れ替える文字が前半と後半のどちらにあるかで場合分け
        if A < N <= B:
            B -= N
            Ai = S1[A]
            Bi = S2[B]
            S1[A] = Bi
            S2[B] = Ai
        elif A < N and B < N:
            Ai = S1[A]
            Bi = S1[B]
            S1[A] = Bi
            S1[B] = Ai
        else:
            A -= N
            B -= N
            Ai = S2[A]
            Bi = S2[B]
            S2[A] = Bi
            S2[B] = Ai
    else:
        # 前半と後半を入れ替える
        S1, S2 = S2, S1
print(''.join(S1 + S2))