This commit is contained in:
Julia Lange 2026-01-12 12:56:52 -08:00
parent 09d3f25b09
commit 403bd0d4e3
Signed by: Julia
SSH key fingerprint: SHA256:5DJcfxa5/fKCYn57dcabJa2vN2e6eT0pBerYi5SUbto

35
Python/2025/05/main.py Normal file
View file

@ -0,0 +1,35 @@
import bisect
intervals, ids = open("input", 'r').read().split("\n\n")
intervals = sorted([
[int(nm) for nm in interval.split("-")] for interval in intervals.split("\n")
])
ids = [int(id) for id in ids.rstrip().split("\n")]
# Merge intervals
merged_intervals = [intervals[0]]
for interval in intervals[1:]:
if interval[0] <= merged_intervals[-1][1]:
merged_intervals[-1][1] = max(interval[1], merged_intervals[-1][1])
else:
merged_intervals.append(interval)
def check_id_in_intervals(id, intervals):
left_interval = bisect.bisect(intervals,id,key=lambda l: l[0])-1
if left_interval < 0:
return False
return id <= intervals[left_interval][1]
fresh_ids = [
check_id_in_intervals(id, merged_intervals)
for id in ids
]
print(len([fresh_id for fresh_id in fresh_ids if fresh_id is True]))
# Part 2
total = 0
for interval in merged_intervals:
start, end = interval
total += end - start + 1
print(total)