Official

A - トーナメント敗退ラウンド / Tournament Elimination Round Editorial by sounansya


AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題 A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。


トーナメントの勝負を順番にシミュレーションしていけば良いです。

各選手の強さと番号を情報として持ち、隣り合う選手同士を戦わせるシミュレーションを行うと実装が楽です。詳しくは以下の実装例を参考にしてください。

実装例(Python3)

n = int(input())
s = list(map(int, input().split()))
a = [(s[i], i) for i in range(n)]
ans = [0] * n
r = 1
while len(a) != 1:
    aa = []
    for i in range(0, len(a), 2):
        if a[i][0] < a[i + 1][0]:
            ans[a[i][1]] = r
            aa.append(a[i + 1])
        else:
            ans[a[i + 1][1]] = r
            aa.append(a[i])
    a = aa
    r += 1
print(*ans)

posted:
last update: