結果

問題 No.2422 regisys?
ユーザー lam6er
提出日時 2025-04-15 23:42:29
言語 PyPy3
(7.3.15)
結果
WA  
実行時間 -
コード長 1,315 bytes
コンパイル時間 378 ms
コンパイル使用メモリ 82,616 KB
実行使用メモリ 133,612 KB
最終ジャッジ日時 2025-04-15 23:45:00
合計ジャッジ時間 20,335 ms
ジャッジサーバーID
(参考情報)
judge1 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 12 WA * 49
権限があれば一括ダウンロードができます

ソースコード

diff #

n, m = map(int, input().split())
a = list(map(int, input().split()))
b = list(map(int, input().split()))

regular = []
member = []

for _ in range(m):
    t, c = map(int, input().split())
    if t == 0:
        regular.append(c)
    else:
        member.append(c)

# Sort buyers in descending order of their C values
regular.sort(reverse=True)
member.sort(reverse=True)

# Create a list of products and sort them by descending max(A_i, B_i)
products = list(zip(a, b))
products.sort(key=lambda x: (-max(x[0], x[1]), x[0], x[1]))

r_ptr = 0  # pointer for regular buyers
m_ptr = 0  # pointer for member buyers
count = 0

for a_i, b_i in products:
    max_price = max(a_i, b_i)
    if max_price == a_i or a_i == b_i:
        # Try regular first
        if r_ptr < len(regular) and regular[r_ptr] >= a_i:
            count += 1
            r_ptr += 1
        else:
            # Try member
            if m_ptr < len(member) and member[m_ptr] >= b_i:
                count += 1
                m_ptr += 1
    else:
        # Try member first
        if m_ptr < len(member) and member[m_ptr] >= b_i:
            count += 1
            m_ptr += 1
        else:
            # Try regular
            if r_ptr < len(regular) and regular[r_ptr] >= a_i:
                count += 1
                r_ptr += 1

print(n - count)
0