Я пытаюсь вычислить область горизонта (перекрывающиеся прямоугольники с одинаковой базой)
building_count = int(input())
items = {} # dictionary, location on x axis is the key, height is the value
count = 0 # total area
for j in range(building_count):
line = input().split(' ')
H = int(line[0]) # height
L = int(line[1]) # left point (start of the building)
R = int(line[2]) # right point (end of the building)
for k in range(R - L):
if not (L+k in items): # if it not there, add it
items[L+k] = H
elif H > items[L+k]: # if we have a higher building on that index
items[L+k] = H
for value in items.values(): # we add each column basically
count += value
print(count)
выборки будет:
5
3 -3 0
2 -1 1
4 2 4
2 3 7
3 6 8
и вывод 29
.
Проблема - эффективность памяти, когда есть много значений, script просто бросает MemoryError
. У кого-нибудь есть идеи для оптимизации использования памяти?