結果
問題 |
No.200 カードファイト!
|
ユーザー |
![]() |
提出日時 | 2025-03-31 17:54:10 |
言語 | PyPy3 (7.3.15) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,338 bytes |
コンパイル時間 | 162 ms |
コンパイル使用メモリ | 82,752 KB |
実行使用メモリ | 54,728 KB |
最終ジャッジ日時 | 2025-03-31 17:55:56 |
合計ジャッジ時間 | 2,389 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 18 WA * 8 |
ソースコード
import bisect n = int(input()) a = int(input()) b_list = list(map(int, input().split())) c = int(input()) d_list = list(map(int, input().split())) original_A = sorted(b_list) original_C = sorted(d_list) current_A = [] current_C = [] wins = 0 for _ in range(n): # Refill if current cards are exhausted if not current_A: current_A = list(original_A) if not current_C: current_C = list(original_C) sorted_A = sorted(current_A) sorted_C = sorted(current_C) found = False chosen_d = None chosen_a = None # Find the smallest d in C that can be beaten by some a in A for d in sorted_C: idx = bisect.bisect_right(sorted_A, d) if idx < len(sorted_A): chosen_d = d chosen_a = sorted_A[idx] found = True break if found: wins += 1 current_A.remove(chosen_a) current_C.remove(chosen_d) else: # Remove smallest d and smallest a as they can't contribute to future wins # Since any pair will not result in a win, we just remove the smallest ones if sorted_C and sorted_A: current_A.remove(sorted_A[0]) current_C.remove(sorted_C[0]) else: # This case should not occur due to refilling logic pass print(wins)