Maximum area of quadrilateral
Given four sides of quadrilateral a, b, c, d, find the maximum area of the quadrilateral possible from the given sides .
Examples:
Input : 1 2 1 2 Output : 2.00 It is optimal to construct a rectangle for maximum area .

According to Bretschneider’s formula, the area of a general quadrilateral is given by ![]()
Here a, b, c, d are the sides of a quadrilateral, s is the semiperimeter of a quadrilateral and angles are two opposite angles.
So, this formula is maximized only when opposite angles sum to pi(180) then we can use a simplified form of Bretschneider’s formula to get the (maximum) area K. ![]()
This formula is called as Brahmagupta’s formula .
Below is the implementation of given approach
C++
// CPP program to find maximum area of a// quadrilateral#include <iostream>#include <math.h>using namespace std; double maxArea(double a, double b, double c, double d){ // Calculating the semi-perimeter // of the given quadrilateral double semiperimeter = (a + b + c + d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d));} // Driver codeint main(){ double a = 1, b = 2, c= 1, d = 2; cout <<maxArea(a, b, c, d); return 0;}// This code is contributed by shivanisinghss2110 |
C
// CPP program to find maximum area of a// quadrilateral#include <stdio.h>#include <math.h> double maxArea(double a, double b, double c, double d){ // Calculating the semi-perimeter // of the given quadrilateral double semiperimeter = (a + b + c + d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d));} // Driver codeint main(){ double a = 1, b = 2, c= 1, d = 2; printf("%.2f\n",maxArea(a, b, c, d)); return 0;} |
Java
// Java program to find maximum area of a// quadrilateralimport java.io.*;class GFG{ static double maxArea(double a, double b, double c, double d) { // Calculating the semi-perimeter // of the given quadrilateral double semiperimeter = (a + b + c + d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return Math.sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d)); } // Driver code public static void main (String[] args) { double a = 1, b = 2, c= 1, d = 2; System.out.println(maxArea(a, b, c, d)); }}// This code is contributed by sunnysingh |
Python3
# Python3 program to find maximum# area of a quadrilateralimport mathdef maxArea (a , b , c , d ): # Calculating the semi-perimeter # of the given quadrilateral semiperimeter = (a + b + c + d) / 2 # Applying Brahmagupta's formula to # get maximum area of quadrilateral return math.sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d))# Driver codea = 1b = 2c = 1d = 2print("%.2f"%maxArea(a, b, c, d))# This code is contributed by "Sharad_Bhardwaj". |
C#
// C# program to find maximum area of a// quadrilateralusing System;class GFG { static double maxArea(double a, double b, double c, double d) { // Calculating the semi-perimeter // of the given quadrilateral double semiperimeter = (a + b + c + d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return Math.Sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d)); } // Driver code public static void Main () { double a = 1, b = 2, c= 1, d = 2; Console.WriteLine(maxArea(a, b, c, d)); }}// This code is contributed by vt_m. |
PHP
<?php// PHP program to find maximum area of a// quadrilateralfunction maxArea( $a, $b, $c, $d){ // Calculating the semi-perimeter // of the given quadrilateral $semiperimeter = ($a + $b + $c + $d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return sqrt(($semiperimeter - $a) * ($semiperimeter - $b) * ($semiperimeter - $c) * ($semiperimeter - $d));}// Driver code$a = 1; $b = 2; $c= 1; $d = 2;echo(maxArea($a, $b, $c, $d));// This code is contributed by vt_m.?> |
Javascript
<script>// JavaScript program to find maximum area of a// quadrilateralfunction maxArea(a, b, c, d){ // Calculating the semi-perimeter // of the given quadrilateral let semiperimeter = (a + b + c + d) / 2; // Applying Brahmagupta's formula to // get maximum area of quadrilateral return Math.sqrt((semiperimeter - a) * (semiperimeter - b) * (semiperimeter - c) * (semiperimeter - d));}// Driver code let a = 1, b = 2, c= 1, d = 2; document.write(maxArea(a, b, c, d));// This code is contributed by Surbhi Tyagi.</script> |
Output:
2.00
Time Complexity: O(logn)
Auxiliary Space: O(1)
Please suggest if someone has a better solution which is more efficient in terms of space and time.
This article is contributed by Aarti_Rathi. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above



