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.
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() |