No.447 ゆきこーだーの雨と雪 (2)
タグ : / 解いたユーザー数 159
作問者 : りあん / テスター : anta
問題文
Ameくんは, またまた「ゆきこーだー」を運営しているお姉さんのYukiさんのお手伝いをすることになりました.
今回Ameくんに任されたお仕事は, コンテストの最終的な順位表を作ることです.
誰がどの問題をACしたか, という入力が時系列順に与えられるので, 以下のスコアの算出方法, 及び出力フォーマットを参考にして順位表を出力してください.
$i$ 番目の問題名は「$i$ 番目の大文字アルファベット」で, 例えば1番目の問題の名前は「A」, 10番目の問題の名前は「J」となります.
なお, 「ゆきこーだー」でのスコアの算出方法は, 実際のyukicoderのスコアの算出方法
各問題、 50×★の数+50×★の数 / (0.8+ 0.2×ACの順位)とその合計となっております。
に準拠します(上記の式が小数値になった場合, 切り捨てた値をスコアとしてください).
ただし, 合計点が同じ人が複数存在した場合, 最後に点数が増加したタイミングの早い順に順位を定めます.
また, 以下を満たします.
- 全ての提出はAC (正解) である
- 同時に複数の提出は存在しない
- 同じ人が同じ問題を2回以上ACすることはない
入力
$N$ $L_1 \ L_2 \ ... \ L_N$ $T$ $Name_1 \ P_1$ $Name_2 \ P_2$ $:$ $Name_T \ P_T$
1行目に, 問題数 $N$ が与えられます.
続いて2行目に, 各問題のレベル(★の数)の情報 $L_i \ (1 \leq i \leq N)$ が空白区切りで与えられます.
続いて3行目に, 提出の数 $T$ が与えられます.
4行目から $T$ 行の間, 各提出の情報が時系列順に与えられます.
4行目以降の第 $i \ (1 \leq i \leq T)$ 行目には, 提出者の名前 $Name_i$ , 提出した問題の名前 $P_i$ が空白区切りで与えられます.
入力は, 以下の制約を満たします.
- $1 \leq N \leq 26$
- $1 \leq L_i \leq 6$
- $1 \leq T \leq 4000$
- $1 \leq Length(Name_i) \leq 16, \ Name_i$ は半角英小文字のみで構成
- $P_i$ は英大文字1文字であり, '$A$' から「$N$ 番目のアルファベット」までのうちのいずれかである
- $i \neq j$ ならば $(Name_i, P_i) \neq (Name_j, P_j)$
出力
$1 \ Name_1 \ Score_{1,1} \ Score_{1,2} \ ... \ Score_{1,N} \ Sum_1$ $2 \ Name_2 \ Score_{2,1} \ Score_{2,2} \ ... \ Score_{2,N} \ Sum_2$ $:$ $M \ Name_M \ Score_{M,1} \ Score_{M,2} \ ... \ Score_{M,N} \ Sum_M$
コンテストの参加者(1問以上ACした人)の人数を $M$ とすると, 出力は $M$ 行からなります.
出力の各行は, 順位, 名前, 各問題のスコア, スコアの合計点という要素を空白区切りで出力してください.
各問題のスコア, 及び合計点は整数値で出力してください.
$Sum_1 \geq Sum_2 \geq ... \geq Sum_M$ であり, 合計点が等しい時は最後に点数が増加したタイミングの早い方が順位が上である必要があります.
問題名などの書かれるラベル行は出力する必要はありません.
参加者の名前の長さやスコアによってレイアウトが崩れる可能性がありますが, レイアウトを整える必要はありません.
最後に改行してください。サンプル
サンプル1
入力
2 1 2 3 ame A yuki B yuki A
出力
1 yuki 91 200 291 2 ame 100 0 100
yukiさんのA問題のスコアは, 50 + 50 / (0.8 + 0.2 × 2) = 91.666... を切り捨てて91点となります.
サンプル2
入力
3 2 2 4 4 ame A yuki B yuki A ame B
出力
1 yuki 183 200 0 383 2 ame 200 183 0 383
2人は同点ですが, yukiさんが先に383点になったので, yukiさんの順位が上になります.
サンプル3
入力
8 6 5 4 3 2 1 1 1 3 rian F rian G rian H
出力
1 rian 0 0 0 0 0 100 100 100 300
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。