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))