Submission #14612194


Source Code Expand

#!/usr/bin/env python3

from collections import defaultdict
from heapq import heappush, heappop
import sys
import bisect

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


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


# f = open(sys.argv[1])
# input = f.buffer.readline

N, M = map(int, input().split())
vlines = defaultdict(list)
hlines = defaultdict(list)
vticks = {0}
hticks = {0}

for i in range(N):
    A, B, C = map(int, input().split())
    vlines[C].append((A, B))
    hticks.add(C)
    vticks.update((A, B))

for i in range(M):
    D, E, F = map(int, input().split())
    hlines[D].append((E, F))
    vticks.add(D)
    hticks.update((E, F))

vticks = [-INF] + list(sorted(vticks)) + [INF, INF]
hticks = [-INF] + list(sorted(hticks)) + [INF, INF]


def up(y):
    return vticks[bisect.bisect_left(vticks, y) - 1]


def down(y):
    return vticks[bisect.bisect_left(vticks, y) + 1]


def left(x):
    return hticks[bisect.bisect_left(hticks, x) - 1]


def right(x):
    return hticks[bisect.bisect_left(hticks, x) + 1]


def area(x, y):
    i = bisect.bisect_left(hticks, x)
    width = hticks[i + 1] - hticks[i]
    j = bisect.bisect_left(vticks, y)
    height = vticks[j + 1] - vticks[j]
    return width * height


total_area = 0
visited = set()


def visit(x, y):
    global total_area
    if (x, y) in visited:
        return
    # dp("visited: x,y", x, y)
    a = area(x, y)
    total_area += a
    visited.add((x, y))
    # visit neighbors
    l = left(x)
    if (l, y) not in visited:
        for a, b in vlines[x]:
            if a <= y < b:
                # blocked
                break
        else:
            # can move left
            to_visit.append((l, y))

    u = up(y)
    if (x, u) not in visited:
        for a, b in hlines[y]:
            if a <= x < b:
                # blocked
                break
        else:
            # can move up
            to_visit.append((x, u))

    r = right(x)
    if (r, y) not in visited:
        for a, b in vlines[r]:
            if a <= y < b:
                # blocked
                break
        else:
            # can move left
            to_visit.append((r, y))

    d = down(y)
    if (x, d) not in visited:
        for a, b in hlines[d]:
            if a <= x < b:
                # blocked
                break
        else:
            # can move up
            to_visit.append((x, d))


# for y in [up(0), 0]:
#     for x in [left(0), 0]:
#         visit(x, y)
# print(total_area)
to_visit = [(0, 0)]
while to_visit:
    x, y = to_visit.pop()
    if x == INF or x == -INF or y == INF or y == -INF:
        print("INF")
        break
    visit(x, y)
else:
    print(total_area)


def _test():
    import doctest
    doctest.testmod()

Submission Info

Submission Time
Task F - . (Single Dot)
User nishiohirokazu
Language Python (3.8.2)
Score 0
Code Size 2926 Byte
Status TLE
Exec Time 3311 ms
Memory 144920 KiB

Judge Result

Set Name Sample Subtask1
Score / Max Score 0 / 0 0 / 600
Status
AC × 2
AC × 85
TLE × 11
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 21 ms 9376 KiB
sample_02.txt AC 32 ms 9336 KiB
sub1_01.txt AC 39 ms 9972 KiB
sub1_02.txt AC 72 ms 11028 KiB
sub1_03.txt AC 32 ms 9652 KiB
sub1_04.txt AC 44 ms 9880 KiB
sub1_05.txt AC 126 ms 15300 KiB
sub1_06.txt AC 85 ms 11484 KiB
sub1_07.txt AC 39 ms 9844 KiB
sub1_08.txt AC 69 ms 11340 KiB
sub1_09.txt AC 29 ms 9504 KiB
sub1_10.txt AC 30 ms 9788 KiB
sub1_11.txt AC 31 ms 9564 KiB
sub1_12.txt AC 29 ms 9240 KiB
sub1_13.txt AC 28 ms 9456 KiB
sub1_14.txt AC 21 ms 9384 KiB
sub1_15.txt AC 28 ms 9236 KiB
sub1_16.txt AC 28 ms 9340 KiB
sub1_17.txt AC 42 ms 10208 KiB
sub1_18.txt AC 1936 ms 57044 KiB
sub1_19.txt AC 1940 ms 61004 KiB
sub1_20.txt AC 54 ms 10756 KiB
sub1_21.txt AC 45 ms 10304 KiB
sub1_22.txt AC 1435 ms 55652 KiB
sub1_23.txt AC 658 ms 29252 KiB
sub1_24.txt AC 1564 ms 56628 KiB
sub1_25.txt AC 124 ms 14596 KiB
sub1_26.txt AC 2125 ms 58292 KiB
sub1_27.txt AC 311 ms 18056 KiB
sub1_28.txt AC 461 ms 22616 KiB
sub1_29.txt AC 146 ms 14560 KiB
sub1_30.txt AC 325 ms 17980 KiB
sub1_31.txt AC 33 ms 9732 KiB
sub1_32.txt AC 812 ms 44496 KiB
sub1_33.txt AC 416 ms 22324 KiB
sub1_34.txt AC 605 ms 27548 KiB
sub1_35.txt AC 1458 ms 56652 KiB
sub1_36.txt AC 572 ms 28192 KiB
sub1_37.txt AC 2018 ms 63180 KiB
sub1_38.txt AC 142 ms 13896 KiB
sub1_39.txt AC 87 ms 10948 KiB
sub1_40.txt AC 1736 ms 58580 KiB
sub1_41.txt AC 159 ms 13756 KiB
sub1_42.txt AC 31 ms 9400 KiB
sub1_43.txt AC 29 ms 9472 KiB
sub1_44.txt AC 24 ms 9328 KiB
sub1_45.txt AC 33 ms 9464 KiB
sub1_46.txt AC 30 ms 9244 KiB
sub1_47.txt AC 154 ms 14888 KiB
sub1_48.txt AC 653 ms 24232 KiB
sub1_49.txt AC 358 ms 21484 KiB
sub1_50.txt AC 637 ms 25708 KiB
sub1_51.txt AC 242 ms 18856 KiB
sub1_52.txt AC 223 ms 17704 KiB
sub1_53.txt AC 28 ms 9664 KiB
sub1_54.txt AC 772 ms 33324 KiB
sub1_55.txt TLE 3311 ms 127832 KiB
sub1_56.txt TLE 3311 ms 120532 KiB
sub1_57.txt AC 42 ms 10500 KiB
sub1_58.txt TLE 3311 ms 138400 KiB
sub1_59.txt TLE 3311 ms 139968 KiB
sub1_60.txt AC 396 ms 22864 KiB
sub1_61.txt TLE 3310 ms 105732 KiB
sub1_62.txt TLE 3310 ms 118908 KiB
sub1_63.txt AC 82 ms 10600 KiB
sub1_64.txt AC 2853 ms 144920 KiB
sub1_65.txt AC 351 ms 21324 KiB
sub1_66.txt AC 1108 ms 37040 KiB
sub1_67.txt AC 100 ms 11140 KiB
sub1_68.txt AC 374 ms 21448 KiB
sub1_69.txt AC 188 ms 16416 KiB
sub1_70.txt AC 51 ms 10028 KiB
sub1_71.txt AC 28 ms 9372 KiB
sub1_72.txt AC 32 ms 9460 KiB
sub1_73.txt AC 21 ms 9236 KiB
sub1_74.txt AC 35 ms 9960 KiB
sub1_75.txt AC 33 ms 9556 KiB
sub1_76.txt AC 32 ms 9980 KiB
sub1_77.txt AC 38 ms 9536 KiB
sub1_78.txt AC 41 ms 9520 KiB
sub1_79.txt AC 51 ms 9556 KiB
sub1_80.txt AC 42 ms 9916 KiB
sub1_81.txt AC 45 ms 9580 KiB
sub1_82.txt AC 54 ms 9728 KiB
sub1_83.txt AC 26 ms 9228 KiB
sub1_84.txt AC 42 ms 9796 KiB
sub1_85.txt AC 63 ms 9868 KiB
sub1_86.txt AC 27 ms 9456 KiB
sub1_87.txt AC 24 ms 9232 KiB
sub1_88.txt AC 24 ms 9344 KiB
sub1_89.txt TLE 3311 ms 139480 KiB
sub1_90.txt TLE 3311 ms 141796 KiB
sub1_91.txt TLE 3311 ms 140392 KiB
sub1_92.txt TLE 3311 ms 139440 KiB
sub1_93.txt TLE 3311 ms 139584 KiB
sub1_94.txt AC 28 ms 9504 KiB