P14428 [JOISC 2014] 二人的星座 / Constellation 2

题目描述

JOI 酱和 IOI 酱是亲密无间的好友。某日,她们决定在山顶的观景台上进行天文观测。 在观景台上,可以观测到 $N$ 颗星星。每颗星星被赋予从 $1$ 到 $N$ 的编号,并且每颗星星呈现红色、蓝色或黄色中的一种颜色。 在观景台上观测到的星星被表示为坐标平面上的点。在该坐标平面中,第 $i$ 颗星星($1 \le i \le N$)对应于点 $P_i(X_i, Y_i)$。坐标平面上的点 $P_1, \dots, P_N$ 两两互不相同,且任意三点不共线。 JOI 酱和 IOI 酱决定创造一个名为 **JOIOI 座** 的星座。她们首先考虑用红色、蓝色、黄色各一颗星星构成一个三角形,称这样的三角形为“**良好三角形**”。 两人决定将满足以下条件的两组良好三角形(不考虑顺序)作为 **JOIOI 座** 的候选: - 两个良好三角形(包括三角形的边界和内部)没有公共点。也就是说,两个良好三角形既不重叠,也没有一个包含另一个的情况。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/yypz4s9z.png) 左图:满足条件的样例 右图:不满足条件的样例 ::: JOI 酱和 IOI 酱决定统计可以作为 **JOIOI 座** 候选的方案总数。需要注意的是,即使构成 **JOIOI 座** 候选的 6 颗星星完全相同,只要构成“良好三角形”的连接方式不同,就将它们视为不同的候选方案进行计数。 **问题** 给定在观景台上观测到的星星信息,编写一个程序,输出 **JOIOI 座** 候选方案的总数。

输入格式

从标准输入读取以下数据: - 第 1 行包含一个整数 $N$,表示在观景台上观测到的星星数量。 - 接下来的 $N$ 行中的第 $i$ 行($1 \le i \le N$)包含三个整数 $X_i, Y_i, C_i$,以空格分隔。这表示第 $i$ 颗星星的坐标为 $P_i(X_i, Y_i)$,而 $C_i$ 表示第 $i$ 颗星星的颜色:若 $C_i = 0$,则为红色;若 $C_i = 1$,则为蓝色;若 $C_i = 2$,则为黄色。

输出格式

在标准输出上,输出一个整数,表示 **JOIOI 座** 候选方案的总数,占一行。

说明/提示

### 样例 1 解释 在该输入示例中,星星的分布如图所示。图中,红色星星用圆形表示,蓝色星星用菱形表示,黄色星星用三角形表示。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/xktibru4.png) ::: 在该输入示例中,**JOIOI 座** 的候选方案共有以下 4 种。 :::align{center} ![](https://cdn.luogu.com.cn/upload/image_hosting/9mcq9uuc.png) ::: ### 数据范围 所有输入数据均满足以下条件: - $6 \le N \le 3\,000$ - $-100\,000 \le X_i \le 100\,000$ - $-100\,000 \le Y_i \le 100\,000$ - $0 \le C_i \le 2$ - 每种颜色的星星至少存在一颗 - $P_i \ne P_j$(对所有 $1 \le i < j \le N$) - $P_i, P_j, P_k$ 不共线(对所有 $1 \le i < j < k \le N$) ### 子任务 **子任务 1 [15 分]** - 满足 $N \le 30$。 **子任务 2 [40 分]** - 满足 $N \le 300$。 **子任务 3 [45 分]** 无额外限制。 翻译由 Qwen3-235B 完成