两个人的星座
题号:NC53264
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

题目译自 JOISC 2014 Day4 T1「2 人の星座
JOI酱和IOI酱是一对亲密无间的好朋友。某天,JOI酱与IOI酱决定去山上的某个观象台进行天体观测。
从观象台上可以观测到N颗星星,编号为。每颗星星的颜色为红色、蓝色、黄色中的一种。
在观象台上观测到的星星可以用坐标系上的点来表示。在坐标系上,i号星对应的点为P_i,位于(X_i,Y_i)。坐标系上的点两两不同,且不存在三点共线。
JOI酱和IOI酱想要设立一个叫做「JOIOI座」的星座。首先。两个人决定使用红色、蓝色、黄色三种颜色的星各一个构成的三角形。他们将这样的三角形称作「好三角形」。两人将满足以下条件的一对(两个,无序)好三角形作为「JOIOI座的候补」:
  • 两个三角形没有公共点(包括内部和边界)。换言之,两个三角形之间既不相交,也不存在某个三角形包含另一个三角形。
JOI酱和IOI酱想知道构成JOIOI座的候补一共有多少种方案。
注意,如果构成三角形的6个点一样,但是构成三角形的方式不同,算作不同的方案。
现在给出观象台上能观测到的星星的信息,请求出构成「JOIOI座的候补」一共有多少种方案。

输入描述:

第一行一个整数N,代表展望台上能观测到的星星的数量。
接下来N行,第i行有三个空格分隔的整数X_i,Y_i,C_i,表示i号星的坐标为(X_i,Y_i)C_i表示i号星的颜色,其中0代表红色,1代表蓝色,2代表黄色。

输出描述:

输出一行一个整数,表示JOIOI座候补的方案数。
示例1

输入

复制
7
0 0 0
2 0 1
1 2 2
-2 1 0
-2 -3 0
0 -2 1
2 -2 2

输出

复制
4

说明

星星的位置如下图。红星->圆,蓝星->菱形,黄星->三角形。
有四种JOIOI座的候补:
Snipaste_2018-10-17_22-35-19.png
示例2

输入

复制
8
16 0 0
17 0 0
0 7 2
0 -7 2
-1 -1 1
-1 1 2
-6 4 1
-6 -4 1

输出

复制
12
示例3

输入

复制
21
1 20 0
4 20 0
0 22 0
5 22 0
6 25 0
8 25 0
4 26 0
11 11 1
7 12 1
14 13 1
8 15 1
15 16 1
11 17 1
18 0 2
13 2 2
16 2 2
19 4 2
18 6 2
21 8 2
24 8 2
19 10 2

输出

复制
7748

备注:

对于的数据,
对于另外的数据,
对于所有数据,或1或2,保证任何一种颜色的星星都有至少一颗,星星坐标互不相同,无三星共线。

CC-BY-SA,感谢LOJ分享,译文来自 https://loj.ac/problem/2882