Related Articles
Coordinates of rectangle with given points lie inside
• Difficulty Level : Medium
• Last Updated : 04 Oct, 2018

Given two arrays X[] and Y[] with n-elements, where (Xi, Yi) represent a point on coordinate system, find the smallest rectangle such that all points from given input lie inside that rectangle and sides of rectangle must be parallel to Coordinate axis. Print all four coordinates of obtained rectangle.
Note : n >= 4 (we have at least 4 points as input).

Examples :

```Input : X[] = {1, 3, 0, 4},  y[] = {2, 1, 0, 2}
Output : {0, 0}, {0, 2}, {4, 2}, {4, 0}

Input : X[] = {3, 6, 1, 9, 13, 0, 4}, Y[] = {4, 2, 6, 5, 2, 3, 1}
Output : {0, 1}, {0, 6}, {13, 6}, {13, 1}
```

For finding the smallest rectangle you may take two of basic approach :

1. Consider origin of coordinate plane as smallest rectangle and then step by step keep expanding it as per value of coordinates of points if they don’t lie inside the current rectangle. This concept requires a little of complex logic to find the exact smallest rectangle.
2. A very simple and efficient logic behind this is to find the smallest as well as largest x & y coordinates among all given points and then the all possible four combinations of these values result the four points of required rectangle as {Xmin, Ymin}, {Xmin, Ymax}, {Xmax, Ymax}, {Xmax, Ymin}.

## C++

 `// Program to find smallest rectangle ` `// to conquer all points ` `#include ` `using` `namespace` `std; ` ` `  `// function to print coordinate of smallest rectangle ` `void` `printRect(``int` `X[], ``int` `Y[], ``int` `n) ` `{ ` `    ``// find Xmax and Xmin ` `    ``int` `Xmax = *max_element(X, X + n); ` `    ``int` `Xmin = *min_element(X, X + n); ` ` `  `    ``// find Ymax and Ymin ` `    ``int` `Ymax = *max_element(Y, Y + n); ` `    ``int` `Ymin = *min_element(Y, Y + n); ` ` `  `    ``// print all four coordinates ` `    ``cout << ``"{"` `<< Xmin << ``", "` `<< Ymin << ``"}"` `<< endl; ` `    ``cout << ``"{"` `<< Xmin << ``", "` `<< Ymax << ``"}"` `<< endl; ` `    ``cout << ``"{"` `<< Xmax << ``", "` `<< Ymax << ``"}"` `<< endl; ` `    ``cout << ``"{"` `<< Xmax << ``", "` `<< Ymin << ``"}"` `<< endl; ` `} ` ` `  `// driver program ` `int` `main() ` `{ ` `    ``int` `X[] = { 4, 3, 6, 1, -1, 12 }; ` `    ``int` `Y[] = { 4, 1, 10, 3, 7, -1 }; ` `    ``int` `n = ``sizeof``(X) / ``sizeof``(X[0]); ` `     `  `    ``printRect(X, Y, n); ` `     `  `    ``return` `0; ` `} `

## Java

 `// Program to find smallest rectangle ` `// to conquer all points ` `import` `java.util.Arrays; ` `import` `java.util.Collections; ` ` `  `class` `GFG { ` `         `  `    ``// function to print coordinate of smallest rectangle ` `    ``static` `void` `printRect(Integer X[], Integer Y[], ``int` `n) ` `    ``{ ` `         `  `        ``// find Xmax and Xmin ` `        ``int` `Xmax = Collections.max(Arrays.asList(X)); ` `        ``int` `Xmin = Collections.min(Arrays.asList(X)); ` `     `  `        ``// find Ymax and Ymin ` `        ``int` `Ymax = Collections.max(Arrays.asList(Y)); ` `        ``int` `Ymin = Collections.min(Arrays.asList(Y)); ` `     `  `        ``// print all four coordinates ` `        ``System.out.println(``"{"` `+ Xmin + ``", "` `+ Ymin + ``"}"``); ` `        ``System.out.println(``"{"` `+ Xmin + ``", "` `+ Ymax + ``"}"``); ` `        ``System.out.println(``"{"` `+ Xmax + ``", "` `+ Ymax + ``"}"``); ` `        ``System.out.println(``"{"` `+ Xmax + ``", "` `+ Ymin + ``"}"``); ` `    ``} ` `     `  `    ``//Driver code ` `    ``public` `static` `void` `main (String[] args) ` `    ``{ ` `         `  `        ``Integer X[] = { ``4``, ``3``, ``6``, ``1``, -``1``, ``12` `}; ` `        ``Integer Y[] = { ``4``, ``1``, ``10``, ``3``, ``7``, -``1` `}; ` `        ``int` `n = X.length; ` `         `  `        ``printRect(X, Y, n); ` `    ``} ` `} ` ` `  `// This code is contributed by Anant Agarwal. `

## Python 3

 `# Program to find smallest rectangle ` `# to conquer all points ` ` `  `# function to print coordinate of smallest rectangle ` `def` `printRect(X, Y, n): ` ` `  `    ``# find Xmax and Xmin ` `    ``Xmax ``=` `max``(X) ` `    ``Xmin ``=` `min``(X) ` ` `  `    ``# find Ymax and Ymin ` `    ``Ymax ``=` `max``(Y) ` `    ``Ymin ``=` `min``(Y) ` ` `  `    ``# print all four coordinates ` `    ``print``(``"{"``,Xmin,``", "``,Ymin,``"}"``,sep``=``"" ) ` `    ``print``(``"{"``,Xmin,``", "``,Ymax,``"}"``,sep``=``"" ) ` `    ``print``(``"{"``,Xmax,``", "``,Ymax,``"}"``,sep``=``"" ) ` `    ``print``(``"{"``,Xmax,``", "``,Ymin,``"}"``,sep``=``"" ) ` ` `  `# driver program ` `X ``=` `[``4``, ``3``, ``6``, ``1``, ``-``1``, ``12``]  ` `Y ``=`  `[``4``, ``1``, ``10``, ``3``, ``7``, ``-``1``] ` `n ``=` `len``(X)  ` `printRect(X, Y, n) ` `# This code is contributed by ` `# Smitha Dinesh Semwal `

## C#

 `// Program to find smallest rectangle ` `// to conquer all points ` `using` `System.Linq; ` `using` `System; ` ` `  `public` `class` `GFG{ ` `     `  `    ``// function to print coordinate ` `    ``// of smallest rectangle ` `    ``static` `void` `printRect(``int``[] X,  ` `                        ``int``[] Y, ``int` `n) ` `    ``{ ` `         `  `        ``// find Xmax and Xmin ` `        ``int` `Xmax = X.Max(); ` `        ``int` `Xmin = X.Min(); ` `     `  `        ``// find Ymax and Ymin ` `        ``int` `Ymax = Y.Max(); ` `        ``int` `Ymin = Y.Min(); ` `     `  `        ``// print all four coordinates ` `        ``Console.WriteLine(``"{"` `+ Xmin + ``", "` `                             ``+ Ymin + ``"}"``); ` `                              `  `        ``Console.WriteLine(``"{"` `+ Xmin + ``", "` `                             ``+ Ymax + ``"}"``); ` `                              `  `        ``Console.WriteLine(``"{"` `+ Xmax + ``", "` `                             ``+ Ymax + ``"}"``); ` `                              `  `        ``Console.WriteLine(``"{"` `+ Xmax + ``", "` `                             ``+ Ymin + ``"}"``); ` `    ``} ` `     `  `    ``// Driver code ` `    ``static` `public` `void` `Main () ` `    ``{ ` `        ``int``[] X = { 4, 3, 6, 1, -1, 12 }; ` `        ``int``[] Y = { 4, 1, 10, 3, 7, -1 }; ` `        ``int` `n = X.Length; ` `         `  `        ``printRect(X, Y, n); ` `    ``} ` `} ` ` `  `// This code is contributed by Ajit. `

## PHP

 ` `

Output:

```{-1, -1}
{-1, 10}
{12, 10}
{12, -1}
```

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :