結果

問題 No.200 カードファイト!
ユーザー lam6er
提出日時 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
権限があれば一括ダウンロードができます

ソースコード

diff #

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