DeepRest

Bridge Construction - Min overlap intervals

Jun 21st, 2021
94
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.83 KB | None | 0 0
  1. #python 3.7.1
  2. import sys
  3.  
  4. cache = {}
  5. def minOverlap(indx):
  6. if indx in cache.keys():
  7. return cache[indx]
  8. if intervals[indx][0] == 1:
  9. return intervals[indx][1] - intervals[indx][0] + 1
  10.  
  11. t = indx+1
  12. ans = sys.maxsize
  13. while(t< m and intervals[t][1] >= intervals[indx][0] - 1):
  14. ans = min(ans, minOverlap(t))
  15. t+=1
  16.  
  17. cache[indx] = ans + intervals[indx][1] - intervals[indx][0] + 1
  18. return cache[indx]
  19.  
  20. n, m = map(int, input().strip().split())
  21. intervals = [list(map(int, input().strip().split())) for i in range(m)]
  22.  
  23. sections = {k:0 for k in range(1, n+1)}
  24. for a, b in intervals:
  25. for key in range(a,b+1):
  26. sections[key] = 1
  27.  
  28. if len(set(sections.values())) == 2:
  29. print(-1)
  30. else:
  31. intervals = sorted(intervals, key = lambda x:x[1], reverse=True)
  32. ans = minOverlap(0)
  33. print(ans)
  34.  
Advertisement
Add Comment
Please, Sign In to add comment