Skip to content

Instantly share code, notes, and snippets.

@inspirit941
Created July 28, 2025 10:07
Show Gist options
  • Save inspirit941/66b96b122759d4a39f57a066f5a82588 to your computer and use it in GitHub Desktop.
Save inspirit941/66b96b122759d4a39f57a066f5a82588 to your computer and use it in GitHub Desktop.
#!/bin/python3
import math
import os
import random
import re
import sys
#
# Complete the 'gridlandMetro' function below.
#
# The function is expected to return an INTEGER.
# The function accepts following parameters:
# 1. INTEGER n
# 2. INTEGER m
# 3. INTEGER k
# 4. 2D_INTEGER_ARRAY track
#
def gridlandMetro(n, m, k, track):
# Write your code here
maps = n * m
overlap_check = {}
for row, start, end in track:
if row not in overlap_check:
overlap_check[row] = [[start, end]]
else:
need_append = []
for i in range(len(overlap_check[row])):
prev_start, prev_end = overlap_check[row][i][0], overlap_check[row][i][1]
# overlap_check
if start > prev_end or end < prev_start:
need_append.append((start, end))
else:
new_start = min(prev_start, start)
new_end = max(prev_end, end)
overlap_check[row][i][0] = new_start
overlap_check[row][i][1] = new_end
if len(need_append) > 0:
overlap_check[row].extend(need_append)
for row, values in overlap_check.items():
for (start, end) in values:
maps = maps - (end - start + 1)
return maps
if __name__ == '__main__':
fptr = open(os.environ['OUTPUT_PATH'], 'w')
first_multiple_input = input().rstrip().split()
n = int(first_multiple_input[0])
m = int(first_multiple_input[1])
k = int(first_multiple_input[2])
track = []
for _ in range(k):
track.append(list(map(int, input().rstrip().split())))
result = gridlandMetro(n, m, k, track)
fptr.write(str(result) + '\n')
fptr.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment