問題概要
問題ページ
-
C - Welcome to AtCoder
問題ページへ移動する
問題文
高橋君は AtCoder のコンテストに参加しています。
このコンテストでは、 \(N\) 問の問題が出題されます。
高橋君はコンテスト中に \(M\) 回の提出を行いました。
\(i\) 回目の提出は \(p_i\) 番目の問題への提出であり、結果は \(S_i\) (AC
または WA
) でした。
高橋君の正答数は、AC
を \(1\) 回以上出した問題の数です。
高橋君のペナルティ数は、高橋君が AC
を \(1\) 回以上出した各問題において、初めて AC
を出すまでに出した WA
の数の総和です。
高橋君の正答数とペナルティ数を答えてください。
制約
- \(N\) , \(M\) , \(p_i\) は整数
- \(1 ≤ N ≤ 10^5\)
- \(0 ≤ M ≤ 10^5\)
- \(1 \leq p_i \leq N\)
- \(S_i\) は
AC
かWA
のいずれか
問題の考察
ACコード
import sys
import collections
def solve():
readline = sys.stdin.buffer.readline
mod = 10 ** 9 + 7
n, m = list(map(int, readline().split()))
ps = [list(map(str, readline().rstrip().decode('utf-8').split())) for _ in range(m)]
ac = collections.defaultdict(int)
wa = collections.defaultdict(int)
for p, s in ps:
if s == "WA":
if p not in ac:
wa[p] += 1
if s == "AC":
ac[p] += 1
wac = 0
for k, v in wa.items():
if k in ac:
wac += v
print(len(ac), wac)
if __name__ == '__main__':
solve()