精度解决了嘛 求解 有偿 求解 有偿

#include <bits/stdc++.h>

using namespace std;
const int maxn = 100005;
double x[maxn], y[maxn], p[maxn], ans;
int n;

double cj(double x1, double y1, double x2, double y2)
{
return (x1 * y2 - y1 * x2);
}

signed main()
{
//freopen("in","r",stdin);

cout << fixed << setprecision(6);
cin >> n;
for (int i = 1; i <= n; i++)
    cin >> x[i] >> y[i] >> p[i];
double s = 0.0;
for (int i = 1; i <= n; i++)
{
    for (int j = 1; j <= n; j++)
    {
        if (i != j)
        {
            s = cj(x[i], y[i], x[j], y[j]) * p[i] * p[j];
            for (int k = 1; k <= n; k++)
            {
                if (k != i && k != j)
                {
                    if (cj(x[k] - x[i], y[k] - y[i], x[j] - x[i], y[j] - y[i]) < 0)
                        s = s * (1 - p[k]);
                }
            }
            ans = ans + s;
        }
    }
}
cout << abs(ans / 2) << endl;
return 0;

}