Submission #13349468


Source Code Expand

import sys
import numpy as np
from numba import njit

read = sys.stdin.buffer.read
readline = sys.stdin.buffer.readline
readlines = sys.stdin.buffer.readlines

INF = 10**9 + 1

N, M = map(int, readline().split())
data = np.array(read().split(), np.int64)
A = data[::3]
B = data[1::3]
C = data[2::3]

D = A[N:]
E = B[N:]
F = C[N:]
A = A[:N]
B = B[:N]
C = C[:N]

X = np.unique(np.concatenate([A, B, D, [0, -INF, INF]]))
Y = np.unique(np.concatenate([C, E, F, [0, -INF, INF]]))
DX = X[1:] - X[:-1]
DY = Y[1:] - Y[:-1]

A = np.searchsorted(X, A)
B = np.searchsorted(X, B)
C = np.searchsorted(Y, C)
D = np.searchsorted(X, D)
E = np.searchsorted(Y, E)
F = np.searchsorted(Y, F)

H, W = len(X), len(Y)
N = H * W

@njit
def set_ng(A, B, C, D, E, F):
    p = 0
    head = np.full(N, -1, np.int32)
    ng = np.empty(4 * N, np.int32)
    nxt = np.empty(4 * N, np.int32)

    def add(v, w):
        nonlocal p
        nxt[p] = head[v]
        head[v] = p
        ng[p] = w
        p += 1

    for i in range(len(A)):
        a, b, c = A[i], B[i], C[i]
        for x in range(a, b):
            v = x * W + c
            add(v, v - 1)
            add(v - 1, v)
    for i in range(len(D)):
        d, e, f = D[i], E[i], F[i]
        for y in range(e, f):
            v = d * W + y
            add(v, v - W)
            add(v - W, v)
    return head, ng[:p], nxt[:p]

head, ng, nxt = set_ng(A, B, C, D, E, F)

@njit
def next_w(head, ng, nxt, v):
    p = head[v]
    V = [v - W, v + W, v - 1, v + 1]
    while p != -1:
        if ng[p] in V:
            V.remove(ng[p])
        p = nxt[p]
    return V

x0, y0 = np.searchsorted(X, 0), np.searchsorted(Y, 0)
v0 = x0 * W + y0

@njit
def solve():
    visited = np.zeros(N, np.bool_)
    visited[v0] = 1
    stack = np.empty(N, np.int32)
    p = 0
    ret = 0

    def area(x):
        x, y = divmod(x, W)
        return DX[x] * DY[y]

    def push(x):
        nonlocal p, ret
        stack[p] = x
        visited[x] = 1
        ret += area(x)
        p += 1

    def pop():
        nonlocal p
        p -= 1
        return stack[p]

    push(v0)
    while p:
        v = pop()
        for w in next_w(head, ng, nxt, v):
            if visited[w]:
                continue
            x, y = divmod(w, W)
            if x == 0 or x == H - 1 or y == 0 or y == W - 1:
                return 0
            push(w)
    return ret

x = solve()
if x == 0:
    print('INF')
else:
    print(x)

Submission Info

Submission Time
Task F - . (Single Dot)
User maspy
Language Python (3.8.2)
Score 600
Code Size 2538 Byte
Status AC
Exec Time 2488 ms
Memory 227780 KiB

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 1299 ms 120908 KiB
sample_02.txt AC 1290 ms 121440 KiB
sub1_01.txt AC 1317 ms 141492 KiB
sub1_02.txt AC 1312 ms 134988 KiB
sub1_03.txt AC 1317 ms 129304 KiB
sub1_04.txt AC 1429 ms 143464 KiB
sub1_05.txt AC 1334 ms 160232 KiB
sub1_06.txt AC 1312 ms 134824 KiB
sub1_07.txt AC 1314 ms 138000 KiB
sub1_08.txt AC 1315 ms 136516 KiB
sub1_09.txt AC 1307 ms 134188 KiB
sub1_10.txt AC 1360 ms 180160 KiB
sub1_11.txt AC 1383 ms 131976 KiB
sub1_12.txt AC 1296 ms 122084 KiB
sub1_13.txt AC 1289 ms 121656 KiB
sub1_14.txt AC 1295 ms 121280 KiB
sub1_15.txt AC 1298 ms 122232 KiB
sub1_16.txt AC 1291 ms 121196 KiB
sub1_17.txt AC 1423 ms 145156 KiB
sub1_18.txt AC 1474 ms 145364 KiB
sub1_19.txt AC 1468 ms 144628 KiB
sub1_20.txt AC 1434 ms 143956 KiB
sub1_21.txt AC 1418 ms 142808 KiB
sub1_22.txt AC 1435 ms 143088 KiB
sub1_23.txt AC 1414 ms 144860 KiB
sub1_24.txt AC 1444 ms 143916 KiB
sub1_25.txt AC 1410 ms 143120 KiB
sub1_26.txt AC 1472 ms 145156 KiB
sub1_27.txt AC 1452 ms 147732 KiB
sub1_28.txt AC 1471 ms 147472 KiB
sub1_29.txt AC 1478 ms 147300 KiB
sub1_30.txt AC 1455 ms 147228 KiB
sub1_31.txt AC 1432 ms 146360 KiB
sub1_32.txt AC 1429 ms 143736 KiB
sub1_33.txt AC 1442 ms 144760 KiB
sub1_34.txt AC 1455 ms 145296 KiB
sub1_35.txt AC 1472 ms 146244 KiB
sub1_36.txt AC 1438 ms 144428 KiB
sub1_37.txt AC 1458 ms 142692 KiB
sub1_38.txt AC 1355 ms 131476 KiB
sub1_39.txt AC 1312 ms 124392 KiB
sub1_40.txt AC 1448 ms 143604 KiB
sub1_41.txt AC 1354 ms 131216 KiB
sub1_42.txt AC 1297 ms 121672 KiB
sub1_43.txt AC 1293 ms 120988 KiB
sub1_44.txt AC 1293 ms 121264 KiB
sub1_45.txt AC 1287 ms 121620 KiB
sub1_46.txt AC 1293 ms 121216 KiB
sub1_47.txt AC 1369 ms 133232 KiB
sub1_48.txt AC 1380 ms 130952 KiB
sub1_49.txt AC 1347 ms 132656 KiB
sub1_50.txt AC 1361 ms 131636 KiB
sub1_51.txt AC 1348 ms 132360 KiB
sub1_52.txt AC 1348 ms 130680 KiB
sub1_53.txt AC 1353 ms 132792 KiB
sub1_54.txt AC 1365 ms 131840 KiB
sub1_55.txt AC 1749 ms 172348 KiB
sub1_56.txt AC 1699 ms 173228 KiB
sub1_57.txt AC 1335 ms 170312 KiB
sub1_58.txt AC 1684 ms 172128 KiB
sub1_59.txt AC 1684 ms 170284 KiB
sub1_60.txt AC 1363 ms 169800 KiB
sub1_61.txt AC 1437 ms 138504 KiB
sub1_62.txt AC 1660 ms 165120 KiB
sub1_63.txt AC 1319 ms 124728 KiB
sub1_64.txt AC 1314 ms 150216 KiB
sub1_65.txt AC 1437 ms 145256 KiB
sub1_66.txt AC 1418 ms 138940 KiB
sub1_67.txt AC 1334 ms 125988 KiB
sub1_68.txt AC 1454 ms 146456 KiB
sub1_69.txt AC 1452 ms 149936 KiB
sub1_70.txt AC 1470 ms 152584 KiB
sub1_71.txt AC 1283 ms 120860 KiB
sub1_72.txt AC 1280 ms 120776 KiB
sub1_73.txt AC 1278 ms 120748 KiB
sub1_74.txt AC 1338 ms 163944 KiB
sub1_75.txt AC 1313 ms 129728 KiB
sub1_76.txt AC 1391 ms 220752 KiB
sub1_77.txt AC 1300 ms 122560 KiB
sub1_78.txt AC 1299 ms 122288 KiB
sub1_79.txt AC 1302 ms 122656 KiB
sub1_80.txt AC 1304 ms 122432 KiB
sub1_81.txt AC 1300 ms 122808 KiB
sub1_82.txt AC 1310 ms 123328 KiB
sub1_83.txt AC 1286 ms 121240 KiB
sub1_84.txt AC 1300 ms 122420 KiB
sub1_85.txt AC 1309 ms 123256 KiB
sub1_86.txt AC 1287 ms 121072 KiB
sub1_87.txt AC 1290 ms 121092 KiB
sub1_88.txt AC 1288 ms 121244 KiB
sub1_89.txt AC 1952 ms 227636 KiB
sub1_90.txt AC 1957 ms 227780 KiB
sub1_91.txt AC 1956 ms 227308 KiB
sub1_92.txt AC 1951 ms 226864 KiB
sub1_93.txt AC 2488 ms 227388 KiB
sub1_94.txt AC 1291 ms 121328 KiB