Submission #14647413


Source Code Expand

Copy
#!/usr/bin/env python3
from heapq import heappush, heappop
import sys
import numpy as np
sys.setrecursionlimit(10**6)
input = sys.stdin.buffer.readline
# INF = sys.maxsize
INF = 10 ** 9 + 1
# INF = float("inf")
def dp(*x): # debugprint
print(*x)
try:
profile
except:
def profile(f): return f
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#!/usr/bin/env python3

from heapq import heappush, heappop
import sys
import numpy as np

sys.setrecursionlimit(10**6)
input = sys.stdin.buffer.readline
# INF = sys.maxsize
INF = 10 ** 9 + 1
# INF = float("inf")


def dp(*x):  # debugprint
    print(*x)


try:
    profile
except:
    def profile(f): return f


@profile
def main(N, M, data):
    ABC = data[:3 * N]
    DEF = data[3 * N:]
    A, B, C = [ABC[i::3] for i in range(3)]
    D, E, F = [DEF[i::3] for i in range(3)]

    xticks = np.unique(np.concatenate((E, F, C, np.array([-INF, 0, INF]))))
    yticks = np.unique(np.concatenate((A, B, D, np.array([-INF, 0, INF]))))
    width = xticks[1:] - xticks[:-1]
    height = yticks[1:] - yticks[:-1]

    # compress
    A = np.searchsorted(yticks, A).astype(np.int16)
    B = np.searchsorted(yticks, B).astype(np.int16)
    C = np.searchsorted(xticks, C).astype(np.int16)
    D = np.searchsorted(yticks, D).astype(np.int16)
    E = np.searchsorted(xticks, E).astype(np.int16)
    F = np.searchsorted(xticks, F).astype(np.int16)

    GRAPH_WIDTH = len(xticks)
    GRAPH_HEIGHT = len(yticks)
    NUM_VERTEXES = GRAPH_HEIGHT * GRAPH_WIDTH

    ng_edges = np.zeros((NUM_VERTEXES, 4), dtype=np.uint8)
    direction = (-1, +1, -GRAPH_WIDTH, +GRAPH_WIDTH)

    # vertical lines A,C-B,C
    for i in range(N):
        x = C[i]
        for y in range(A[i], B[i]):
            pos = y * GRAPH_WIDTH + x
            ng_edges[pos, 0] = 1  # left
            ng_edges[pos - 1, 1] = 1  # right
    A = B = C = 0

    # horizontal lines D,E-D,F
    for i in range(M):
        y = D[i]
        for x in range(E[i], F[i]):
            pos = y * GRAPH_WIDTH + x
            ng_edges[pos, 2] = 1
            ng_edges[pos - GRAPH_WIDTH, 3] = 1
    D = E = F = 0

    total_area = 0
    visited = np.zeros(NUM_VERTEXES)

    x = np.searchsorted(xticks, 0)
    y = np.searchsorted(yticks, 0)
    start = y * GRAPH_WIDTH + x
    to_visit = [start]

    while to_visit:
        pos = to_visit.pop()
        y, x = divmod(pos, GRAPH_WIDTH)
        if visited[pos]:
            continue
        if y == 0 or y == GRAPH_HEIGHT - 1 or x == 0 or x == GRAPH_WIDTH - 1:
            print("INF")
            break

        total_area += width[x] * height[y]
        visited[pos] = 1
        # plan to visit neighbors
        for i in range(4):
            if not ng_edges[pos][i]:
                next = pos + direction[i]
                if visited[next]:
                    continue
                to_visit.append(next)
    else:
        print(total_area)


if sys.argv[-1] == 'ONLINE_JUDGE' or sys.argv[-1] == '-c':
    print("compiling")
    from numba.pycc import CC
    cc = CC('my_module')
    cc.export(
        'main',
        "void(i4, i4, i4[:])"
    )(main)
    # b1: bool, i4: int32, i8: int64, double: f8, [:], [:, :]
    cc.compile()
    exit()
else:
    if sys.argv[-1] != '-p':
        # -p: pure python mode
        # if not -p, import compiled module
        from my_module import main  # pylint: disable=all

    # read parameter
    import numba
    N, M = map(int, input().split())
    data = np.int32(sys.stdin.read().split())
    main(N, M, data)

Submission Info

Submission Time
Task F - . (Single Dot)
User nishiohirokazu
Language Python (3.8.2)
Score 600
Code Size 3267 Byte
Status AC
Exec Time 1256 ms
Memory 237524 KB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 600 / 600
Status
AC × 2
AC × 96
Set Name Test Cases
Sample sample_01.txt, sample_02.txt
Subtask1 sample_01.txt, sample_02.txt, sub1_01.txt, sub1_02.txt, sub1_03.txt, sub1_04.txt, sub1_05.txt, sub1_06.txt, sub1_07.txt, sub1_08.txt, sub1_09.txt, sub1_10.txt, sub1_11.txt, sub1_12.txt, sub1_13.txt, sub1_14.txt, sub1_15.txt, sub1_16.txt, sub1_17.txt, sub1_18.txt, sub1_19.txt, sub1_20.txt, sub1_21.txt, sub1_22.txt, sub1_23.txt, sub1_24.txt, sub1_25.txt, sub1_26.txt, sub1_27.txt, sub1_28.txt, sub1_29.txt, sub1_30.txt, sub1_31.txt, sub1_32.txt, sub1_33.txt, sub1_34.txt, sub1_35.txt, sub1_36.txt, sub1_37.txt, sub1_38.txt, sub1_39.txt, sub1_40.txt, sub1_41.txt, sub1_42.txt, sub1_43.txt, sub1_44.txt, sub1_45.txt, sub1_46.txt, sub1_47.txt, sub1_48.txt, sub1_49.txt, sub1_50.txt, sub1_51.txt, sub1_52.txt, sub1_53.txt, sub1_54.txt, sub1_55.txt, sub1_56.txt, sub1_57.txt, sub1_58.txt, sub1_59.txt, sub1_60.txt, sub1_61.txt, sub1_62.txt, sub1_63.txt, sub1_64.txt, sub1_65.txt, sub1_66.txt, sub1_67.txt, sub1_68.txt, sub1_69.txt, sub1_70.txt, sub1_71.txt, sub1_72.txt, sub1_73.txt, sub1_74.txt, sub1_75.txt, sub1_76.txt, sub1_77.txt, sub1_78.txt, sub1_79.txt, sub1_80.txt, sub1_81.txt, sub1_82.txt, sub1_83.txt, sub1_84.txt, sub1_85.txt, sub1_86.txt, sub1_87.txt, sub1_88.txt, sub1_89.txt, sub1_90.txt, sub1_91.txt, sub1_92.txt, sub1_93.txt, sub1_94.txt
Case Name Status Exec Time Memory
sample_01.txt AC 381 ms 91392 KB
sample_02.txt AC 364 ms 91492 KB
sub1_01.txt AC 394 ms 124524 KB
sub1_02.txt AC 391 ms 112872 KB
sub1_03.txt AC 378 ms 104356 KB
sub1_04.txt AC 373 ms 97548 KB
sub1_05.txt AC 406 ms 157960 KB
sub1_06.txt AC 383 ms 112560 KB
sub1_07.txt AC 382 ms 113612 KB
sub1_08.txt AC 376 ms 107992 KB
sub1_09.txt AC 386 ms 108708 KB
sub1_10.txt AC 424 ms 172580 KB
sub1_11.txt AC 366 ms 92312 KB
sub1_12.txt AC 373 ms 91456 KB
sub1_13.txt AC 376 ms 90736 KB
sub1_14.txt AC 368 ms 90736 KB
sub1_15.txt AC 385 ms 91660 KB
sub1_16.txt AC 370 ms 91504 KB
sub1_17.txt AC 385 ms 103980 KB
sub1_18.txt AC 430 ms 103592 KB
sub1_19.txt AC 429 ms 104332 KB
sub1_20.txt AC 385 ms 104652 KB
sub1_21.txt AC 395 ms 102808 KB
sub1_22.txt AC 405 ms 104248 KB
sub1_23.txt AC 396 ms 103916 KB
sub1_24.txt AC 416 ms 104740 KB
sub1_25.txt AC 392 ms 103692 KB
sub1_26.txt AC 421 ms 103920 KB
sub1_27.txt AC 390 ms 103088 KB
sub1_28.txt AC 388 ms 103528 KB
sub1_29.txt AC 392 ms 103156 KB
sub1_30.txt AC 392 ms 102820 KB
sub1_31.txt AC 380 ms 102988 KB
sub1_32.txt AC 392 ms 103516 KB
sub1_33.txt AC 394 ms 103908 KB
sub1_34.txt AC 399 ms 104268 KB
sub1_35.txt AC 403 ms 103664 KB
sub1_36.txt AC 398 ms 104436 KB
sub1_37.txt AC 422 ms 104900 KB
sub1_38.txt AC 369 ms 92476 KB
sub1_39.txt AC 377 ms 92084 KB
sub1_40.txt AC 410 ms 103932 KB
sub1_41.txt AC 382 ms 92992 KB
sub1_42.txt AC 378 ms 91912 KB
sub1_43.txt AC 372 ms 91548 KB
sub1_44.txt AC 364 ms 91532 KB
sub1_45.txt AC 377 ms 90740 KB
sub1_46.txt AC 379 ms 92144 KB
sub1_47.txt AC 381 ms 95204 KB
sub1_48.txt AC 393 ms 96224 KB
sub1_49.txt AC 388 ms 95876 KB
sub1_50.txt AC 381 ms 95840 KB
sub1_51.txt AC 376 ms 95836 KB
sub1_52.txt AC 382 ms 95872 KB
sub1_53.txt AC 376 ms 95824 KB
sub1_54.txt AC 383 ms 95776 KB
sub1_55.txt AC 830 ms 200832 KB
sub1_56.txt AC 779 ms 202132 KB
sub1_57.txt AC 484 ms 201844 KB
sub1_58.txt AC 752 ms 200268 KB
sub1_59.txt AC 763 ms 194324 KB
sub1_60.txt AC 453 ms 196708 KB
sub1_61.txt AC 513 ms 128172 KB
sub1_62.txt AC 744 ms 186352 KB
sub1_63.txt AC 381 ms 92208 KB
sub1_64.txt AC 421 ms 156952 KB
sub1_65.txt AC 390 ms 93068 KB
sub1_66.txt AC 409 ms 99608 KB
sub1_67.txt AC 379 ms 91408 KB
sub1_68.txt AC 390 ms 93816 KB
sub1_69.txt AC 381 ms 94160 KB
sub1_70.txt AC 383 ms 94268 KB
sub1_71.txt AC 381 ms 91508 KB
sub1_72.txt AC 384 ms 91328 KB
sub1_73.txt AC 379 ms 92156 KB
sub1_74.txt AC 417 ms 135816 KB
sub1_75.txt AC 384 ms 101112 KB
sub1_76.txt AC 452 ms 197468 KB
sub1_77.txt AC 381 ms 91444 KB
sub1_78.txt AC 377 ms 90872 KB
sub1_79.txt AC 366 ms 91260 KB
sub1_80.txt AC 378 ms 92084 KB
sub1_81.txt AC 367 ms 91536 KB
sub1_82.txt AC 374 ms 91712 KB
sub1_83.txt AC 370 ms 91912 KB
sub1_84.txt AC 373 ms 90912 KB
sub1_85.txt AC 368 ms 92088 KB
sub1_86.txt AC 372 ms 92160 KB
sub1_87.txt AC 378 ms 91304 KB
sub1_88.txt AC 370 ms 91680 KB
sub1_89.txt AC 1005 ms 236828 KB
sub1_90.txt AC 995 ms 236100 KB
sub1_91.txt AC 1018 ms 237524 KB
sub1_92.txt AC 1007 ms 236764 KB
sub1_93.txt AC 1256 ms 236584 KB
sub1_94.txt AC 387 ms 91532 KB


2025-04-15 (Tue)
00:22:02 +00:00