Maximize the Distance Between Points on a Square

You are given an integer side, representing the edge length of a square with corners at (0, 0), (0, side), (side, 0), and (side, side) on a Cartesian plane.

You are also given a positive integer k and a 2D integer array points, where points[i] = [xi, yi] represents the coordinate of a point lying on the boundary of the square.

You need to select k elements among points such that the minimum Manhattan distance between any two points is maximized.

Return the maximum possible minimum Manhattan distance between the selected k points.

The Manhattan Distance between two cells (xi, yi) and (xj, yj) is |xi - xj| + |yi - yj|.

Example 1
Inputside = 2, points = [[0,2],[2,0],[2,2],[0,0]], k = 4
Output2
Selecting all four points gives a minimum Manhattan distance of 2 between any pair of selected points.
Example 2
Inputside = 2, points = [[0,0],[1,2],[2,0],[2,2],[2,1]], k = 4
Output1
Selecting the points (0, 0), (2, 0), (2, 2), and (2, 1) gives the maximum possible minimum Manhattan distance of 1.

Constraints

  • 1 <= side <= 10^9
  • 4 <= points.length <= min(4 * side, 15 * 10^3)
  • points[i] == [xi, yi]
  • The input is generated such that:
  • points[i] lies on the boundary of the square.
  • All points[i] are unique.
  • 4 <= k <= min(25, points.length)

Asked at 2 companies

</>

Your Solution

(Ctrl/Cmd + Enter)

Switching Language

Loading template...

Loading...

Sign in to save your progress

AI code evaluation

Get a correctness verdict, missed edge cases, and complexity analysis of your solution.

Sign in to evaluate