結果
問題 |
No.447 ゆきこーだーの雨と雪 (2)
|
ユーザー |
![]() |
提出日時 | 2025-03-20 20:31:48 |
言語 | PyPy3 (7.3.15) |
結果 |
AC
|
実行時間 | 113 ms / 2,000 ms |
コード長 | 1,464 bytes |
コンパイル時間 | 377 ms |
コンパイル使用メモリ | 82,312 KB |
実行使用メモリ | 80,948 KB |
最終ジャッジ日時 | 2025-03-20 20:32:50 |
合計ジャッジ時間 | 4,054 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 25 |
ソースコード
import math N = int(input()) L = list(map(int, input().split())) T = int(input()) submissions = [input().split() for _ in range(T)] problem_counts = [0] * N users = {} for timestamp, (name, p_char) in enumerate(submissions, 1): p_idx = ord(p_char) - ord('A') problem_counts[p_idx] += 1 ac_rank = problem_counts[p_idx] if name not in users: users[name] = { 'name': name, 'problems': {}, 'last_submission_time': 0, 'scores': None, 'sum_cached': 0, } user = users[name] user['problems'][p_idx] = ac_rank user['last_submission_time'] = timestamp for user in users.values(): scores = [0] * N sum_score = 0 for p_idx in range(N): if p_idx in user['problems']: ac_rank = user['problems'][p_idx] li = L[p_idx] d = 0.8 + 0.2 * ac_rank score_part1 = 50 * li score_part2 = (50 * li) / d total = score_part1 + score_part2 score = math.floor(total) scores[p_idx] = score sum_score += score user['scores'] = scores user['sum_cached'] = sum_score sorted_users = sorted(users.values(), key=lambda u: (-u['sum_cached'], u['last_submission_time'])) for rank, user in enumerate(sorted_users, 1): output_parts = [str(rank), user['name']] + list(map(str, user['scores'])) + [str(user['sum_cached'])] print(' '.join(output_parts))