Guest User

Untitled

a guest
Nov 17th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.08 KB | None | 0 0
  1. import math
  2. import sys
  3. import logging
  4.  
  5.  
  6. def get_centroid(points):
  7. c_x = sum((x for x,y in points))/len(points)
  8. c_y = sum((y for x,y in points))/len(points)
  9. logging.debug('Centroid: %s' % ((c_x, c_y),))
  10. return (c_x, c_y)
  11.  
  12. def distance(p0, p1):
  13. return int(math.sqrt((p0[0] - p1[0])**2 + (p0[1] - p1[1])**2))
  14.  
  15. def abs_distance(p0, p1):
  16. return max(abs(p0[0] - p1[0]), abs(p0[1]-p1[1]))
  17.  
  18. def main():
  19. data = sys.stdin.read().splitlines()
  20. points = []
  21. for d in data[1:]:
  22. if d == '':
  23. break
  24. x, y = d.split()
  25. points.append((int(x), int(y)))
  26. logging.debug('Points: %s' % points)
  27.  
  28. centroid = get_centroid(points)
  29.  
  30. central_point = min(points, key=lambda x: distance(centroid, x))
  31. logging.debug('Central Point: %s' % (central_point,))
  32.  
  33. min_distance = sum((abs_distance(central_point, x) for x in points))
  34. logging.debug('Minimum sum of distances: %s' % (min_distance))
  35. print min_distance
  36.  
  37. if __name__ == '__main__':
  38. logging.basicConfig(level=logging.INFO)
  39. main()
Add Comment
Please, Sign In to add comment