結果

問題 No.447 ゆきこーだーの雨と雪 (2)
ユーザー lam6er
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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))
0