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 |