Minimum length of the shortest path of a triangle - GeeksforGeeks

09 Mar, 2022
Given N points on the plane, ( X1, Y1 ), ( X2, Y2 ), ( X3, Y3 ), ......, ( XN, YN ). The task is to calculate the minimum length of the shorter side of the triangle. and the path or points to place an isosceles triangle with any two sides of the triangle on the coordinate axis ( X axis and Y axis ) to cover all points.Note: A point is covered if it lies inside the triangle or on the side of the triangle.Examples: 
Input: (1, 3), (1, 1), (2, 1), (2, 2) Output: Length -> 4 , Path -> ( 1, 4 ) and ( 4, 1 )Input: (1, 2), (1, 1), (2, 1) Output: Length -> 3 , Path -> ( 1, 3 ) and ( 3, 1 )
 
 
In the first example, the minimum length of the shortest path is equal to the maximum sum of the points, which is 1+3 or 2+2. So the path which will cover all the points is (1, 4) and (4, 1) on the coordinate axis.Below is the step by step algorithm to solve this problem:  
Initialize ‘N’ points on a plane.Traverse through each point and find the sum of each point and store it in a variable ‘answer’.Replace the next maximum sum of the points with the previous sum.Then you will get the path on a coordinate axis ( 1, answer ) and ( answer, 1 ) which will cover all the points of isosceles triangle.
Initialize ‘N’ points on a plane.
Traverse through each point and find the sum of each point and store it in a variable ‘answer’.
Replace the next maximum sum of the points with the previous sum.
Then you will get the path on a coordinate axis ( 1, answer ) and ( answer, 1 ) which will cover all the points of isosceles triangle.
Below is the implementation of above algorithm:  
C++
Java
Python 3
C#
PHP
Javascript
// C++ program to illustrate// the above problem#include <bits/stdc++.h>using namespace std;#define ll long long // function to get the minimum length of// the shorter side of the trianglevoid shortestLength(int n, int x[], int y[]){        int answer = 0;     // traversing through each points on the plane    int i = 0;    while (n--) {        // if sum of a points is greater than the        // previous one, the maximum gets replaced        if (x[i] + y[i] > answer)            answer = x[i] + y[i];         i++;    }     // print the length    cout << "Length -> " << answer << endl;    cout << "Path -> "         << "( 1, " << answer << " )"         << "and ( " << answer << ", 1 )";} // Driver codeint main(){    // initialize the number of points    int n = 4;     // points on the plane    int x[n] = { 1, 4, 2, 1 };    int y[n] = { 4, 1, 1, 2 };     shortestLength(n, x, y);     return 0;}
// Java program to illustrate// the above problemclass GFG{ // function to get the minimum length of// the shorter side of the trianglestatic void shortestLength(int n, int x[],                           int y[]){    int answer = 0;     // traversing through each    // points on the plane    int i = 0;    while (n != 0 && i < x.length)    {        // if sum of a points is greater        // than the previous one, the        // maximum gets replaced        if (x[i] + y[i] > answer)            answer = x[i] + y[i];         i++;    }     // print the length    System.out.println("Length -> " + answer );    System.out.println("Path -> " +                       "( 1, " + answer + " )" +                       "and ( " + answer + ", 1 )");} // Driver codepublic static void main(String[] args){    // initialize the number of points    int n = 4;     // points on the plane    int x[] = new int[] { 1, 4, 2, 1 };    int y[] = new int[] { 4, 1, 1, 2 };     shortestLength(n, x, y);}} // This code is contributed// by Prerna Saini
# Python 3 program to illustrate# the above problem # function to get the minimum length of# the shorter side of the triangledef shortestLength(n, x, y):    answer = 0     # traversing through each    # points on the plane    i = 0    while n > 0:                 # if sum of a points is greater        # than the previous one, the        # maximum gets replaced        if (x[i] + y[i] > answer):            answer = x[i] + y[i]         i += 1        n -= 1     # print the length    print("Length -> "+ str(answer))    print( "Path -> "+        "( 1, " +str(answer)+ " )"+        "and ( "+str( answer) +", 1 )") # Driver codeif __name__ == "__main__":         # initialize the number of points    n = 4     # points on the plane    x = [ 1, 4, 2, 1 ]    y = [ 4, 1, 1, 2 ]    shortestLength(n, x, y) # This code is contributed# by ChitraNayal
// C# program to illustrate// the above problemusing System; class GFG{ // function to get the minimum// length of the shorter side// of the trianglestatic void shortestLength(int n, int[] x,                           int[] y){    int answer = 0;     // traversing through each    // points on the plane    int i = 0;    while (n != 0 && i < x.Length)    {        // if sum of a points is greater        // than the previous one, the        // maximum gets replaced        if (x[i] + y[i] > answer)            answer = x[i] + y[i];         i++;    }     // print the length    Console.WriteLine("Length -> " + answer);    Console.WriteLine("Path -> " +                      "( 1, " + answer + " )" +                      "and ( " + answer + ", 1 )");} // Driver codestatic public void Main (){         // initialize the    // number of points    int n = 4;     // points on the plane    int[] x = new int[] { 1, 4, 2, 1 };    int[] y = new int[] { 4, 1, 1, 2 };     shortestLength(n, x, y);}} // This code is contributed by Mahadev
<?php// PHP program to illustrate// the above problem // function to get the minimum length of// the shorter side of the trianglefunction shortestLength($n, &$x, &$y){    $answer = 0;     // traversing through each    // points on the plane    $i = 0;    while ($n--)    {                 // if sum of a points is greater        // than the previous one, the        // maximum gets replaced        if ($x[$i] + $y[$i] > $answer)            $answer = $x[$i] + $y[$i];         $i++;    }     // print the length    echo "Length -> ".$answer."\n";    echo "Path -> ". "( 1, " .$answer ." )".         "and ( " .$answer . ", 1 )";} // Driver code // initialize the number of points$n = 4; // points on the plane$x = array(1, 4, 2, 1 );$y = array(4, 1, 1, 2 ); shortestLength($n, $x, $y); // This code is contributed// by ChitraNayal?>
<script> // Javascript program to illustrate// the above problem // function to get the minimum length of// the shorter side of the trianglefunction shortestLength(n, x, y){    let answer = 0;     // traversing through each    // points on the plane    let i = 0;    while (n != 0 && i < x.length)    {        // if sum of a points is greater        // than the previous one, the        // maximum gets replaced        if (x[i] + y[i] > answer)            answer = x[i] + y[i];         i++;    }     // print the length    document.write("Length -> " + answer + "<br/>");    document.write("Path -> " +                       "( 1, " + answer + " )" +                       "and ( " + answer + ", 1 )");}  // Driver Code     // initialize the number of points    let n = 4;     // points on the plane    let x = [ 1, 4, 2, 1 ];    let y = [ 4, 1, 1, 2 ];     shortestLength(n, x, y); </script>
Length -> 5
Path -> ( 1, 5 )and ( 5, 1 )
 
prerna saini
Mahadev99
ukasp
sanjoy_62
simranarora5sos
arorakashish0911
math
triangle
Geometric
Mathematical
Mathematical
Geometric
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.
Line Clipping | Set 1 (Cohen–Sutherland Algorithm)
Convex Hull | Set 2 (Graham Scan)
Optimum location of point to minimize total distance
Check whether a given point lies inside a triangle or not
Closest Pair of Points | O(nlogn) Implementation
Program for Fibonacci numbers
Write a program to print all permutations of a given string
C++ Data Types
Set in C++ Standard Template Library (STL)
Coin Change | DP-7