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 |
|
|
| 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 |