Submission #14404930


Source Code Expand

from heapq import *
N = int(input())
T = [None] * N
for i in range(N):
    _, *ts = [int(x) for x in input().split()]
    T[i] = ts
    ts.append(-1)
    ts.append(-1)
M = int(input())
A = [int(x) for x in input().split()]

for1 = []
for2 = []
cursor1 = [0] * N
cursor2 = [1] * N
for i, ts in enumerate(T):
    heappush(for1, (-ts[0], i))
    heappush(for2, (-ts[0], i))
    heappush(for2, (-ts[1], i))

for m in range(M):
    # print(cursor1)
    # print(cursor2)
    # print(for1[:3])
    # print(for2[:3])
    if A[m] == 1:
        while True:
            t, pos = for1[0]
            i1 = cursor1[pos]
            i2 = cursor2[pos]
            if T[pos][i1] == -t:
                # first item
                print(-t)
                heappop(for1)
                T[pos][i1] = None
                cursor1[pos] = i2
                heappush(for1, (-T[pos][i2], pos))
                cursor2[pos] = i2 + 1
                heappush(for2, (-T[pos][i2 + 1], pos))
                break
            heappop(for1)

    else:
        while True:
            t, pos = for2[0]
            i1 = cursor1[pos]
            i2 = cursor2[pos]
            if T[pos][i2] == -t:
                # second item
                print(-t)
                heappop(for2)
                T[pos][i2] = None
                cursor2[pos] = i2 + 1
                heappush(for2, (-T[pos][i2 + 1], pos))
                break
            elif T[pos][i1] == -t:
                # first item
                print(-t)
                heappop(for1)
                heappop(for2)
                T[pos][i1] = None
                cursor1[pos] = i2
                heappush(for1, (-T[pos][i2], pos))
                cursor2[pos] = i2 + 1
                heappush(for2, (-T[pos][i2 + 1], pos))
                break
            heappop(for2)

Submission Info

Submission Time
Task L - Supamarket
User nishiohirokazu
Language PyPy3 (7.3.0)
Score 6
Code Size 1879 Byte
Status AC
Exec Time 1829 ms
Memory 172912 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 6 / 6
Status
AC × 2
AC × 18
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
All max_01.txt, max_02.txt, max_03.txt, max_04.txt, max_05.txt, max_06.txt, max_07.txt, max_08.txt, max_09.txt, max_10.txt, random_01.txt, random_02.txt, random_03.txt, random_04.txt, random_05.txt, random_06.txt, sample_01.txt, sample_02.txt
Case Name Status Exec Time Memory
max_01.txt AC 1636 ms 172284 KiB
max_02.txt AC 1829 ms 172912 KiB
max_03.txt AC 554 ms 131284 KiB
max_04.txt AC 559 ms 109408 KiB
max_05.txt AC 562 ms 116500 KiB
max_06.txt AC 609 ms 109940 KiB
max_07.txt AC 654 ms 114704 KiB
max_08.txt AC 913 ms 128280 KiB
max_09.txt AC 966 ms 125756 KiB
max_10.txt AC 1103 ms 129284 KiB
random_01.txt AC 255 ms 88656 KiB
random_02.txt AC 498 ms 89248 KiB
random_03.txt AC 572 ms 113360 KiB
random_04.txt AC 388 ms 83000 KiB
random_05.txt AC 362 ms 94600 KiB
random_06.txt AC 421 ms 84556 KiB
sample_01.txt AC 55 ms 62808 KiB
sample_02.txt AC 66 ms 62892 KiB