 Open in App
Not now

# Find the integer points (x, y) with Manhattan distance atleast N

• Last Updated : 03 Mar, 2022

Given a number N, the task is to find the integer points (x, y) such that 0 <= x, y <= N and Manhattan distance between any two points will be atleast N.
Examples:

```Input: N = 3
Output: (0, 0) (0, 3) (3, 0) (3, 3)

Input: N = 4
Output: (0, 0) (0, 4) (4, 0) (4, 4) (2, 2)```

Approach:

• Manhattan Distance between two points (x1, y1) and (x2, y2) is:
|x1 – x2| + |y1 – y2|
• Here for all pair of points this distance will be atleast N.
• As 0 <= x <= N and 0 <= y <= N so we can imagine a square of side length N whose bottom left corner is (0, 0) and top right corner is (N, N).
• So if we place 4 points in this corner then Manhattan distance will be atleast N.
• Now as we have to maximize the number of the point we have to check is there any available point inside the square.
• If N is even then middle point of the square which is (N/2, N/2) is integer point, otherwise, it will be float value as N/2 is not a integer when N is odd.
• So the only available position is the middle point and we can put a point there only if N is even.
• So number of points will be 4 if N is odd and if N is even then the number of points will be 5.

Below is the implementation of the above approach:

## C++

 `// C++ code to Find the integer points (x, y)` `// with Manhattan distance atleast N`   `#include ` `using` `namespace` `std;`   `// C++ function to find all possible point` `vector > FindPoints(``int` `n)` `{`   `    ``vector > v;`   `    ``// Find all 4 corners of the square` `    ``// whose side length is n` `    ``v.push_back({ 0, 0 });` `    ``v.push_back({ 0, n });` `    ``v.push_back({ n, 0 });` `    ``v.push_back({ n, n });`   `    ``// If n is even then the middle point` `    ``// of the square will be an integer,` `    ``// so we will take that point` `    ``if` `(n % 2 == 0)` `        ``v.push_back({ n / 2, n / 2 });`   `    ``return` `v;` `}`   `// Driver Code` `int` `main()` `{`   `    ``int` `N = 8;`   `    ``vector > v` `        ``= FindPoints(N);`   `    ``// Printing all possible points` `    ``for` `(``auto` `i : v) {` `        ``cout << ``"("` `<< i.first << ``", "` `             ``<< i.second << ``") "``;` `    ``}` `    ``return` `0;` `}`

## Java

 `// Java code to Find the integer points (x, y)` `// with Manhattan distance atleast N` `import` `java.util.*;`   `class` `GFG` `{`   `static` `class` `pair` `{ ` `    ``int` `first, second; ` `    ``public` `pair(``int` `first, ``int` `second) ` `    ``{ ` `        ``this``.first = first; ` `        ``this``.second = second; ` `    ``} ` `}`   `// Java function to find all possible point` `static` `Vector FindPoints(``int` `n)` `{` `    ``Vector v = ``new` `Vector();`   `    ``// Find all 4 corners of the square` `    ``// whose side length is n` `    ``v.add(``new` `pair( ``0``, ``0` `));` `    ``v.add(``new` `pair( ``0``, n ));` `    ``v.add(``new` `pair( n, ``0` `));` `    ``v.add(``new` `pair( n, n ));`   `    ``// If n is even then the middle point` `    ``// of the square will be an integer,` `    ``// so we will take that point` `    ``if` `(n % ``2` `== ``0``)` `        ``v.add(``new` `pair( n / ``2``, n / ``2` `));`   `    ``return` `v;` `}`   `// Driver Code` `public` `static` `void` `main(String[] args)` `{` `    ``int` `N = ``8``;`   `    ``Vector v = FindPoints(N);`   `    ``// Printing all possible points` `    ``for` `(pair i : v) ` `    ``{` `        ``System.out.print(``"("` `+ i.first + ``", "` `+ ` `                               ``i.second + ``") "``);` `    ``}` `}` `}`   `// This code is contributed by PrinciRaj1992`

## Python3

 `# Python3 code to Find the integer points (x, y) ` `# with Manhattan distance atleast N `   `# function to find all possible point ` `def` `FindPoints(n) :`   `    ``v ``=` `[]; `   `    ``# Find all 4 corners of the square ` `    ``# whose side length is n ` `    ``v.append([ ``0``, ``0` `]); ` `    ``v.append([ ``0``, n ]); ` `    ``v.append([ n, ``0` `]); ` `    ``v.append([ n, n ]); `   `    ``# If n is even then the middle point ` `    ``# of the square will be an integer, ` `    ``# so we will take that point ` `    ``if` `(n ``%` `2` `=``=` `0``) :` `        ``v.append([ n ``/``/` `2``, n ``/``/` `2` `]); `   `    ``return` `v; `   `# Driver Code ` `if` `__name__ ``=``=` `"__main__"` `: `   `    ``N ``=` `8``; `   `    ``v ``=` `FindPoints(N); `   `    ``# Printing all possible points ` `    ``for` `element ``in` `v :` `        ``print``(``"("``, element[``0``], ` `              ``","``, element[``1``], ``")"``, end ``=` `" "``); `   `# This code is contributed by AnkitRai01`

## C#

 `// C# code to Find the integer points (x, y)` `// with Manhattan distance atleast N` `using` `System;` `using` `System.Collections.Generic;`   `class` `GFG` `{`   `class` `pair` `{ ` `    ``public` `int` `first, second; ` `    ``public` `pair(``int` `first, ``int` `second) ` `    ``{ ` `        ``this``.first = first; ` `        ``this``.second = second; ` `    ``} ` `}`   `// Function to find all possible point` `static` `List FindPoints(``int` `n)` `{` `    ``List v = ``new` `List();`   `    ``// Find all 4 corners of the square` `    ``// whose side length is n` `    ``v.Add(``new` `pair( 0, 0 ));` `    ``v.Add(``new` `pair( 0, n ));` `    ``v.Add(``new` `pair( n, 0 ));` `    ``v.Add(``new` `pair( n, n ));`   `    ``// If n is even then the middle point` `    ``// of the square will be an integer,` `    ``// so we will take that point` `    ``if` `(n % 2 == 0)` `        ``v.Add(``new` `pair( n / 2, n / 2 ));`   `    ``return` `v;` `}`   `// Driver Code` `public` `static` `void` `Main(String[] args)` `{` `    ``int` `N = 8;`   `    ``List v = FindPoints(N);`   `    ``// Printing all possible points` `    ``foreach` `(pair i ``in` `v) ` `    ``{` `        ``Console.Write(``"("` `+ i.first + ``", "` `+ ` `                            ``i.second + ``") "``);` `    ``}` `}` `}`   `// This code is contributed by Rajput-Ji`

## Javascript

 ``

Output:

`(0, 0) (0, 8) (8, 0) (8, 8) (4, 4)`

Time Complexity: O(1)

Auxiliary Space: O(1)

My Personal Notes arrow_drop_up
Related Articles