Submission #14361676


Source Code Expand

Copy
from heapq import heapify, heappush, heappop
import sys
input = sys.stdin.readline
def solve():
numY = 2*10**5
#numY = 5
N, Q = map(int, input().split())
PQs = [[] for _ in range(numY)]
bels = [-1] * N
rates = [0] * N
for no in range(N):
A, B = map(int, input().split())
B -= 1
heappush(PQs[B], (-A, no))
bels[no] = B
rates[no] = A
PQMAX = []
for y in range(numY):
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
from heapq import heapify, heappush, heappop
import sys
input = sys.stdin.readline

def solve():
    numY = 2*10**5
    #numY = 5

    N, Q = map(int, input().split())
    PQs = [[] for _ in range(numY)]
    bels = [-1] * N
    rates = [0] * N
    for no in range(N):
        A, B = map(int, input().split())
        B -= 1
        heappush(PQs[B], (-A, no))
        bels[no] = B
        rates[no] = A

    PQMAX = []
    for y in range(numY):
        if PQs[y]:
            m, no = PQs[y][0]
            heappush(PQMAX, (-m, y, -1))

    tmUpdates = [-1] * numY
    anss = []
    for tm in range(Q):
        C, D = map(int, input().split())
        C, D = C-1, D-1
        # 転園元
        bel = bels[C]
        rate, no = PQs[bel][0]
        if no == C:
            while 1:
                heappop(PQs[bel])
                if not PQs[bel]:
                    tmUpdates[bel] = tm
                    break
                rate, no = PQs[bel][0]
                if no != C and bels[no] == bel:
                    heappush(PQMAX, (-rate, bel, tm))
                    tmUpdates[bel] = tm
                    break

        # 転園先
        if PQs[D]:
            rate0, no = PQs[D][0]
            heappush(PQs[D], (-rates[C], C))
            rate, no = PQs[D][0]
            if rate < rate0:
                heappush(PQMAX, (-rate, D, tm))
                tmUpdates[D] = tm
        else:
            rate = rates[C]
            heappush(PQs[D], (-rate, C))
            heappush(PQMAX, (rate, D, tm))
            tmUpdates[D] = tm

        # min
        rate, y, tm = PQMAX[0]
        while tm < tmUpdates[y]:
            heappop(PQMAX)
            rate, y, tm = PQMAX[0]

        anss.append(rate)

        bels[C] = D

    print('\n'.join(map(str, anss)))


solve()

Submission Info

Submission Time
Task E - Smart Infants
User ZollingerPython3
Language Python (3.8.2)
Score 500
Code Size 1849 Byte
Status AC
Exec Time 1220 ms
Memory 135052 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status AC
AC × 11
Set Name Test Cases
Sample
All handmade02, handmade03, handmade04, handmade05, handmade06, handmade07, handmade08, handmade09, random10, sample00, sample01
Case Name Status Exec Time Memory
handmade02 AC 62 ms 24644 KB
handmade03 AC 61 ms 24528 KB
handmade04 AC 59 ms 24776 KB
handmade05 AC 512 ms 49792 KB
handmade06 AC 661 ms 106580 KB
handmade07 AC 725 ms 107296 KB
handmade08 AC 1220 ms 135052 KB
handmade09 AC 1213 ms 134960 KB
random10 AC 1211 ms 134540 KB
sample00 AC 62 ms 24640 KB
sample01 AC 59 ms 24532 KB


2025-04-15 (Tue)
01:21:31 +00:00