AtCoder Beginner Contest 222 C問題 Swiss-System Tournament
問題
提出解答
問題の概要
人が参加するじゃんけん大会が開催された. 大会は以下のようにして進行される.
- 第 ラウンド 第 回戦では, 第 ラウンド終了時の 位と, 位の人が戦う.
- 第 ラウンドの第 回戦を終えた後, 以下のようにして, 第 ラウンド終了時の順位を決める.
- 勝利数が多い順. ただし, 勝利数が同じ人同士は, 番号が小さい方が上位
第 ラウンド終了時のランキングを求めよ. ただし, 全ての選手の各ラウンドで出す手は判明している.
制約
解法
が小さいので, 愚直シミュレーションでも間に合う. 具体的には以下のようにすればよい. 以下, で選手 が第 ラウンドで出す手とする.
ここで, 関数 を
とする. そして で, 第 ラウンド終了時に, 位の人の番号とする.
- である.
- の順に以下を行う.
- の順に, 以下を行う.
- ならば, 人 の勝利数を 加算する.
- ならば, 人 の勝利数を 加算する.
- 勝利数と番号を基に, を構成する. 具体的には, 人 の勝利数を としたとき, 長さ のタプルのリスト
を辞書式の意味で降順にソートしたものを ] としたとき, である.
この愚直シミュレーションの計算量は であり, 十分高速である.