No.449 ゆきこーだーの雨と雪 (4)
問題文
(22:29 追記 C/C++ 以外で参加する方は, 文字列をKeyとして扱う場合, 連想配列ではなくハッシュ連想配列で持つことをお薦めします.)
Ameくんは, またまた「ゆきこーだー」を運営しているお姉さんのYukiさんのお手伝いをすることになりました.
前回, Ameくんは無事にコンテストの最終的な順位表を作ることができましたが, 参加者の皆さんからは「コンテストの最中も順位が知りたい」との声が相次ぎました.
ということで, 今回のAmeくんのお仕事は, コンテストの結果を集計しつつ, 参加者から順位を聞かれた時に即座に答える, というものです.
スコアの算出方法など, ゆきこーだーの雨と雪 (2)と同様なので, こちらもご覧ください.
入力
$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$ が空白区切りで与えられます.
$P_i$ が大文字アルファベットのとき, $Name_i$ が問題 $P_i$ を解いた, という情報であり,
$P_i$ が '?' のとき質問クエリであり, Ameくんは現時点での $Name_i$ の順位を答える必要があります.
入力は, 以下の制約を満たします.
- $1 \leq N \leq 26$
- $1 \leq L_i \leq 6$
- $2 \leq T \leq 10^5$
- $1 \leq Length(Name_i) \leq 16, \ Name_i$ は半角英小文字のみで構成
- $P_i$ は '$A$' から「$N$ 番目の大文字アルファベット」までのうちのいずれか, もしくは '?' である
- ($i \neq j$ かつ $P_i \neq$ '?') ならば $(Name_i, P_i) \neq (Name_j, P_j)$
- $P_i =$ '?'を満たす $i$ が少なくともひとつ存在する
- $P_i =$ '?' ならば, ($Name_i = Name_j$ かつ $j < i$) を満たす $j$ が少なくともひとつ存在する
出力
$Rank_1$ $Rank_2$ $:$ $Rank_M$
順位を聞かれた回数を $M$ とすると, 出力は $M$ 行からなります.
最後に改行してください。サンプル
サンプル1
入力
2 2 2 5 ame A yuki B yuki ? yuki A ame ?
出力
2 2
最初にyukiの順位を聞かれたとき, ameもyukiも200点ですがameが先に200点になっているので2を出力,
次にameの順位を聞かれたときは, yukiが383点になっているので2を出力し、上記のようになります.
サンプル2
入力
6 1 2 3 4 5 6 12 yopusot A yusopot A yopusot ? yosoput C yopusot B yosoput ? yosutop F yusopot ? yotupos D yusopot ? yosutop ? yopusot ?
出力
1 1 4 5 1 4
サンプル3
入力
1 1 2 rian A rian ?
出力
1
提出するには、Twitter 、GitHub、 Googleもしくは右上の雲マークをクリックしてアカウントを作成してください。