<p>Given an array of points on the <strong>X-Y</strong> plane <code>points</code> where <code>points[i] = [x<sub>i</sub>, y<sub>i</sub>]</code>, return <em>the area of the largest triangle that can be formed by any three different points</em>. Answers within <code>10<sup>-5</sup></code> of the actual answer will be accepted.</p>

<p>&nbsp;</p>
<p><strong class="example">Example 1:</strong></p>
<img alt="" src="https://s3-lc-upload.s3.amazonaws.com/uploads/2018/04/04/1027.png" style="height: 369px; width: 450px;" />
<pre>
<strong>Input:</strong> points = [[0,0],[0,1],[1,0],[0,2],[2,0]]
<strong>Output:</strong> 2.00000
<strong>Explanation:</strong> The five points are shown in the above figure. The red triangle is the largest.
</pre>

<p><strong class="example">Example 2:</strong></p>

<pre>
<strong>Input:</strong> points = [[1,0],[0,0],[0,1]]
<strong>Output:</strong> 0.50000
</pre>

<p>&nbsp;</p>
<p><strong>Constraints:</strong></p>

<ul>
	<li><code>3 &lt;= points.length &lt;= 50</code></li>
	<li><code>-50 &lt;= x<sub>i</sub>, y<sub>i</sub> &lt;= 50</code></li>
	<li>All the given points are <strong>unique</strong>.</li>
</ul>

class Solution {
    constexpr static double distance(const vector<int>& p1, const vector<int>& p2){
        const double d1 = abs(p1[0] - p2[0]);
        const double d2 = abs(p1[1] - p2[1]);
        return sqrt(d1 * d1 + d2 * d2);
    }

public:
    constexpr static double largestTriangleArea(const vector<vector<int>>& points) {
        const int n = points.size();
        double result = 0.0;
        for (int i = 0; i < n - 2; ++i){
            for (int j = i + 1; j < n - 1; ++j){
                const auto pi = points[i], pj = points[j];
                const double x = distance(pi, pj);
                for (int k = j + 1; k < n; ++k){
                    const double y = distance(pi, points[k]);
                    const double z = distance(pj, points[k]);
                    const double s = (x + y + z) / 2.0;
                    result = max(result, sqrt(s * (s - x) * (s - y) * (s - z)));
                }
            }
        }
        return result;
    }
};

static const auto init = []() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    cout.tie(nullptr);
    return 0;
}();
11000