AtCoder Beginner Contest 222 C - Swiss-System Tournament【Python】
https://atcoder.jp/contests/abc221/tasks/abc221_c
AtCoder ProblemsのRecommendationで Difficulty: 367、Solve Probability: 52%でした。
そのまま実装しただけではありますが、listのindexの取り扱いがややこしく時間がかかってしまいました。
解説を見て、listのソート時にkeyを設定しなくても、各要素の1番目の値が同じ時に2番めの値でソートされるのを知りました。
N, M = map(int, input().split()) A = [] for i in range(2*N): A.append(input()) #番号にマイナスを付加して問題に沿うような順位順にソートできるようにする R = [] for i in range(2*N): R.append([0, -i]) for i in range(M): for k in range(N): r1 = 2*k r2 = 2*k+1 c1 = -R[r1][1] c2 = -R[r2][1] h1 = A[c1][i] h2 = A[c2][i] if h1 == h2: continue elif (h1 == 'G' and h2 == 'C') or (h1 == 'C' and h2 == 'P') or (h1 == 'P' and h2 == 'G'): R[r1][0] += 1 else: R[r2][0] += 1 #R = sorted(R, reverse=True)で良かった R = sorted(R, key=lambda x:(x[0], x[1]), reverse=True) for i in range(2*N): print(-R[i][1] + 1)