Minimum and maximum possible length of the third side of a triangle

07 Jun, 2022
Given two sides of a triangle s1 and s2, the task is to find the minimum and maximum possible length of the third side of the given triangle. Print -1 if it is not possible to make a triangle with the given side lengths. Note that the length of all the sides must be integers.Examples:  
Input: s1 = 3, s2 = 6 Output: Max = 8 Min = 4Input: s1 = 5, s2 = 8 Output: Max = 12 Min = 4  
 
Approach: Let s1, s2 and s3 be the sides of the given triangle where s1 and s2 are given. As we know that in a triangle, the sum of two sides must always be greater than the third side. So, the following equations must be satisfied:  
s1 + s2 > s3s1 + s3 > s2s2 + s3 > s1
s1 + s2 > s3
s1 + s3 > s2
s2 + s3 > s1
Solving for s3, we get s3 < s1 + s2, s3 > s2 – s1 and s3 > s1 – s2. It is clear now that the length of the third side must lie in the range (max(s1, s2) – min(s1, s2), s1 + s2) So, the minimum possible value will be max(s1, s2) – min(s1, s2) + 1 and the maximum possible value will be s1 + s2 – 1.Below is the implementation of the above approach:  
C++
Java
Python3
C#
Javascript
// C++ implementation of the approach#include <iostream>using namespace std; // Function to find the minimum and the// maximum possible length of the third// side of the given trianglevoid find_length(int s1, int s2){     // Not a valid triangle    if (s1 <= 0 || s2 <= 0) {        cout << -1;        return;    }    int max_length = s1 + s2 - 1;    int min_length = max(s1, s2) - min(s1, s2) + 1;     // Not a valid triangle    if (min_length > max_length) {        cout << -1;        return;    }     cout << "Max = " << max_length << endl;    cout << "Min = " << min_length;} // Driver codeint main(){    int s1 = 8, s2 = 5;    find_length(s1, s2);     return 0;}
// Java implementation of the approachimport java.io.*; class GFG{ // Function to find the minimum and the// maximum possible length of the third// side of the given trianglestatic void find_length(int s1, int s2){     // Not a valid triangle    if (s1 <= 0 || s2 <= 0)    {        System.out.print(-1);        return;    }    int max_length = s1 + s2 - 1;    int min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1;     // Not a valid triangle    if (min_length > max_length)    {        System.out.print(-1);        return;    }     System.out.println("Max = " + max_length);    System.out.print("Min = " + min_length);} // Driver codepublic static void main (String[] args){    int s1 = 8, s2 = 5;    find_length(s1, s2);}} // This code is contributed by anuj_67..
# Python3 implementation of the approach # Function to find the minimum and the# maximum possible length of the third# side of the given triangledef find_length(s1, s2) :     # Not a valid triangle    if (s1 <= 0 or s2 <= 0) :        print(-1, end = "");        return;             max_length = s1 + s2 - 1;    min_length = max(s1, s2) - min(s1, s2) + 1;     # Not a valid triangle    if (min_length > max_length) :        print(-1, end = "");        return;     print("Max =", max_length);    print("Min =", min_length);  # Driver codeif __name__ == "__main__" :     s1 = 8;    s2 = 5;         find_length(s1, s2);     # This code is contributed by AnkitRai01
// C# implementation of the approachusing System; class GFG{ // Function to find the minimum and the// maximum possible length of the third// side of the given trianglestatic void find_length(int s1, int s2){     // Not a valid triangle    if (s1 <= 0 || s2 <= 0)    {        Console.Write(-1);        return;    }    int max_length = s1 + s2 - 1;    int min_length = Math.Max(s1, s2) - Math.Min(s1, s2) + 1;     // Not a valid triangle    if (min_length > max_length)    {        Console.WriteLine(-1);        return;    }     Console.WriteLine("Max = " + max_length);    Console.WriteLine("Min = " + min_length);} // Driver codepublic static void Main (){    int s1 = 8, s2 = 5;    find_length(s1, s2);}} // This code is contributed by anuj_67..
<script>// javascript implementation of the approach     // Function to find the minimum and the    // maximum possible length of the third    // side of the given triangle    function find_length(s1 , s2)    {         // Not a valid triangle        if (s1 <= 0 || s2 <= 0)        {            document.write(-1);            return;        }        var max_length = s1 + s2 - 1;        var min_length = Math.max(s1, s2) - Math.min(s1, s2) + 1;         // Not a valid triangle        if (min_length > max_length)        {            document.write(-1);            return;        }         document.write("Max = " + max_length+"<br/>");        document.write("Min = " + min_length);    }     // Driver code    var s1 = 8, s2 = 5;    find_length(s1, s2); // This code is contributed by todaysgaurav</script>
Max = 12
Min = 4
 
Time Complexity: O(1)
Auxiliary Space: O(1)
ankthon
vt_m
todaysgaurav
subham348
Constructive Algorithms
Mathematical
Mathematical
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.