Official
A - トーナメント敗退ラウンド / Tournament Elimination Round Editorial
by
A - トーナメント敗退ラウンド / Tournament Elimination Round Editorial
by
sounansya
AtCoder をはじめたばかりで何をしたらよいか分からない方は、まずは practice contest の問題 A「Welcome to AtCoder」を解いてみてください。基本的な入出力の方法が載っています。
また、プログラミングコンテストの問題に慣れていない方は、AtCoder Beginners Selection の問題をいくつか解いてみることをおすすめします。
トーナメントの勝負を順番にシミュレーションしていけば良いです。
各選手の強さと番号を情報として持ち、隣り合う選手同士を戦わせるシミュレーションを行うと実装が楽です。詳しくは以下の実装例を参考にしてください。
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:
