Coordinates of rectangle with given points lie inside - GeeksforGeeks

03 May, 2021
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 an 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 :  
Consider origin of coordinate plane as the smallest rectangle and then step by step keep expanding it as per the 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.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 in the four points of the required rectangle as {Xmin, Ymin}, {Xmin, Ymax}, {Xmax, Ymax}, {Xmax, Ymin}.
Consider origin of coordinate plane as the smallest rectangle and then step by step keep expanding it as per the 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.
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 in the four points of the required rectangle as {Xmin, Ymin}, {Xmin, Ymax}, {Xmax, Ymax}, {Xmax, Ymin}.
 
 
C++
Java
Python 3
C#
PHP
Javascript
// Program to find smallest rectangle// to conquer all points#include <bits/stdc++.h>using namespace std; // function to print coordinate of smallest rectanglevoid 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 programint 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;}
// Program to find smallest rectangle// to conquer all pointsimport 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.
# Program to find smallest rectangle# to conquer all points # function to print coordinate of smallest rectangledef 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 programX = [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
// Program to find smallest rectangle// to conquer all pointsusing 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// PHP Program to find smallest// rectangle to conquer all points // function to print coordinate// of smallest rectanglefunction 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    echo "{" , $Xmin , ", " , $Ymin , "}","\n";    echo "{" , $Xmin , ", " , $Ymax , "}" ,"\n";    echo "{" , $Xmax , ", " , $Ymax , "}","\n";    echo "{" , $Xmax , ", " , $Ymin , "}" ;}     // Driver Code    $X = array(4, 3, 6, 1, -1, 12);    $Y = array(4, 1, 10, 3, 7, -1);    $n =count($X);    printRect($X, $Y, $n);     // This code is contributed by anuj_67.?>
<script>  // Program to find smallest rectangle// to conquer all points // function to print coordinate of smallest rectanglefunction printRect(X, Y, n){    // find Xmax and Xmin    var Xmax = X.reduce((a,b) => Math.max(a,b));    var Xmin = X.reduce((a,b) => Math.min(a,b));     // find Ymax and Ymin    var Ymax =  Y.reduce((a,b) => Math.max(a,b));    var Ymin = Y.reduce((a,b) => Math.min(a,b));     // print all four coordinates    document.write( "{" + Xmin + ", " + Ymin + "}" + "<br>");    document.write( "{" + Xmin + ", " + Ymax + "}" + "<br>");    document.write( "{" + Xmax + ", " + Ymax + "}" + "<br>");    document.write( "{" + Xmax + ", " + Ymin + "}" + "<br>");} // driver programvar X = [ 4, 3, 6, 1, -1, 12 ];var Y = [ 4, 1, 10, 3, 7, -1 ];var n = X.length;  printRect(X, Y, n);  </script>
{-1, -1}
{-1, 10}
{12, 10}
{12, -1}
 
Smitha Dinesh Semwal
jit_t
vt_m
rutvik_56
square-rectangle
Geometric
School Programming
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Program for distance between two points on earth
Convex Hull | Set 1 (Jarvis's Algorithm or Wrapping)
Convex Hull | Set 2 (Graham Scan)
Given n line segments, find if any two segments intersect
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Python Dictionary
Arrays in C/C++
Inheritance in C++
Reverse a string in Java
Interfaces in Java