結果
問題 | No.449 ゆきこーだーの雨と雪 (4) |
ユーザー |
![]() |
提出日時 | 2025-03-26 15:49:53 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,844 bytes |
コンパイル時間 | 157 ms |
コンパイル使用メモリ | 82,836 KB |
実行使用メモリ | 115,668 KB |
最終ジャッジ日時 | 2025-03-26 15:50:54 |
合計ジャッジ時間 | 34,977 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 1 WA * 42 |
ソースコード
import bisectdef main():import sysinput = sys.stdin.readdata = input().split()idx = 0n = int(data[idx])idx += 1L = list(map(int, data[idx:idx+n]))idx += nproblem_level = {}for i in range(n):problem = chr(ord('A') + i)problem_level[problem] = L[i]T = int(data[idx])idx += 1users = {} # Maps username to (sum_L, k, current_key)sorted_keys = []output = []for _ in range(T):name = data[idx]p = data[idx+1]idx += 2if p != '?':# Handle solve submissionlevel = problem_level[p]if name not in users:sum_L = levelk = 1sp = k * (k + 1) // 2score = sum_L * 100 - spkey = (-score, sp, name)bisect.insort(sorted_keys, key)users[name] = (sum_L, k, key)else:old_sum_L, old_k, old_key = users[name]# Remove old keypos = bisect.bisect_left(sorted_keys, old_key)if pos < len(sorted_keys) and sorted_keys[pos] == old_key:sorted_keys.pop(pos)# Update usersum_L = old_sum_L + levelk = old_k + 1sp = k * (k + 1) // 2score = sum_L * 100 - spnew_key = (-score, sp, name)bisect.insort(sorted_keys, new_key)users[name] = (sum_L, k, new_key)else:# Handle querysum_L, k, current_key = users[name]# Find the rankrank = bisect.bisect_left(sorted_keys, current_key) + 1output.append(str(rank))print('\n'.join(output))if __name__ == "__main__":main()