結果
| 問題 |
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 |
ソースコード
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))
lam6er