}
}
for(int j=0;j
if(temp[j].index == i)
{
temp[j].angle = - 1e100;
}
else
{
temp[j].angle = positiveAtan(temp[j], point[i]);
}
}
sort(temp, temp + n);
int cnt = 0;
for(int j=0;j
right[i][temp[j].index] = ++ cnt;
}
}
memset(num, 0 ,sizeof(num));
for(int i=0;i
for(int j=i+1;j
if(k == i || k == j)
{
continue;
}
if(cross(point[k], point[j], point[i]) < 0)
{
num[i][j] += getAngleNumber(j, k, i) - getTriangleNumber(i, j, k);
}
}
}
}
__int64 ans = 1;
for(int i=0;i
for(int j=i+1;j
ans = (ans * solve(num[i][j])) % MOD;
}
}
printf("%I64d\n", ans);
}
return 0;
}
作者:CyberZHG