Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python3
- from collections import namedtuple
- Event = namedtuple('Event', 'type, time')
- def get_key(e: Event) -> int:
- return e.time + 0.5 if e.type == 'out' else e.time
- def pref_sum(xs):
- for i in range(1, len(xs)):
- xs[i] += xs[i-1]
- return xs
- def intervals_to_events(intervals):
- events = []
- for in_time, out_time in intervals:
- events.append(Event('in', in_time))
- events.append(Event('out', out_time))
- return events
- def max_overlap(intervals) -> int:
- events = intervals_to_events(intervals)
- events.sort(key=get_key)
- in_outs = list(map(lambda event: 1 if event.type == 'in' else -1, events))
- pref_sum(in_outs)
- return max(in_outs)
- def main():
- _test()
- print("ok")
- def _test():
- assert max_overlap([(30, 75), (0, 50), (60, 150)]) == 2
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment