Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #python 3.7.1
- import sys
- cache = {}
- def minOverlap(indx):
- if indx in cache.keys():
- return cache[indx]
- if intervals[indx][0] == 1:
- return intervals[indx][1] - intervals[indx][0] + 1
- t = indx+1
- ans = sys.maxsize
- while(t< m and intervals[t][1] >= intervals[indx][0] - 1):
- ans = min(ans, minOverlap(t))
- t+=1
- cache[indx] = ans + intervals[indx][1] - intervals[indx][0] + 1
- return cache[indx]
- n, m = map(int, input().strip().split())
- intervals = [list(map(int, input().strip().split())) for i in range(m)]
- sections = {k:0 for k in range(1, n+1)}
- for a, b in intervals:
- for key in range(a,b+1):
- sections[key] = 1
- if len(set(sections.values())) == 2:
- print(-1)
- else:
- intervals = sorted(intervals, key = lambda x:x[1], reverse=True)
- ans = minOverlap(0)
- print(ans)
Advertisement
Add Comment
Please, Sign In to add comment