## Problem Definition

Details about this problem is available here. Required Background Topic: Cyclic quadrilateral.

## Solution

Given that the length of the sides are `{a,b,c,d}`

, the *Maximal Quadrilateral Area* is given by the following equation:

where **semiperimeter** `s`

can be defined as follows.

This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters

let getMaxQuadrilateralArea (a,b,c,d) = | |

let s = 0.50 *(a+b+c+d) | |

System.Math.Sqrt((s-a)*(s-b)*(s-c)*(s-d)) | |

let solveSpoj2716() = | |

let parseLine() = | |

let l = System.Console.ReadLine().Split() | |

(l.[0]|>float,l.[1]|>float,l.[2]|>float,l.[3]|>float) | |

let rec runTests currentTest maxAvailableTests = | |

if currentTest < maxAvailableTests then | |

parseLine() | |

|> getMaxQuadrilateralArea | |

|> printfn "%f" | |

runTests (currentTest+1) maxAvailableTests | |

in | |

match System.Console.ReadLine() |> System.Int32.TryParse with | |

| (true, i) when i > 0 -> runTests 0 i | |

| _ -> () | |

solveSpoj2716() |