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)