結果

問題 No.2422 regisys?
ユーザー gew1fw
提出日時 2025-06-12 19:22:33
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 2,143 bytes
コンパイル時間 165 ms
コンパイル使用メモリ 82,844 KB
実行使用メモリ 133,108 KB
最終ジャッジ日時 2025-06-12 19:23:05
合計ジャッジ時間 11,884 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 26 WA * 35
権限があれば一括ダウンロードができます

ソースコード

diff #

n, m = map(int, input().split())
A = list(map(int, input().split()))
B = list(map(int, input().split()))

general = []
mma = []

for _ in range(m):
    T, C = map(int, input().split())
    if T == 0:
        general.append(C)
    else:
        mma.append(C)

# Sort buyers in descending order
general.sort(reverse=True)
mma.sort(reverse=True)

max_gen = general[0] if general else 0
max_mma = mma[0] if mma else 0

category1 = []  # Can only be sold to general
category2 = []  # Can only be sold to MMA
category3 = []  # Can be sold to either

for a, b in zip(A, B):
    can_gen = len(general) > 0 and a <= max_gen
    can_mma = len(mma) > 0 and b <= max_mma

    if can_gen and not can_mma:
        category1.append(a)
    elif can_mma and not can_gen:
        category2.append(b)
    elif can_gen and can_mma:
        category3.append((a, b))

# Process category1
category1.sort()
count1 = 0
i = len(category1) - 1
j_gen = 0
while i >= 0 and j_gen < len(general):
    if general[j_gen] >= category1[i]:
        count1 += 1
        j_gen += 1
        i -= 1
    else:
        i -= 1
remaining_gen = general[j_gen:]

# Process category2
category2.sort()
count2 = 0
i = len(category2) - 1
j_mma = 0
while i >= 0 and j_mma < len(mma):
    if mma[j_mma] >= category2[i]:
        count2 += 1
        j_mma += 1
        i -= 1
    else:
        i -= 1
remaining_mma = mma[j_mma:]

# Process category3
category3_sorted = sorted(category3, key=lambda x: -max(x[0], x[1]))
count3 = 0
j_gen_remain = 0
j_mma_remain = 0

for a, b in category3_sorted:
    can_gen = False
    can_mma = False
    if j_gen_remain < len(remaining_gen) and remaining_gen[j_gen_remain] >= a:
        can_gen = True
    if j_mma_remain < len(remaining_mma) and remaining_mma[j_mma_remain] >= b:
        can_mma = True

    if can_gen and can_mma:
        if a <= b:
            j_gen_remain += 1
            count3 += 1
        else:
            j_mma_remain += 1
            count3 += 1
    elif can_gen:
        j_gen_remain += 1
        count3 += 1
    elif can_mma:
        j_mma_remain += 1
        count3 += 1

total_sold = count1 + count2 + count3
print(n - total_sold)
0