该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。
[AdditionalFile3054.zip](file://AdditionalFile3054.zip?type=additional_file)
#3054. 「HNOI2019」鱼
标签: 传统 | 时间限制: 2000 ms | 内存限制: 512 MiB |
题目描述
在平面坐标系上给定 n 个不同的整点(也即横坐标与纵坐标皆为整数的点)。我们称从这 n 个点中选择 6 个不同的点所组成的有序六元组 ⟨A,B,C,D,E,F⟩ 是一条「鱼」,当且仅当:AB=AC,BD=CD,DE=DF(身形要对称),并且 ∠BAD,∠BDA 与 ∠CAD,∠CDA 都是锐角(脑袋和屁股显然不能是凹的),∠ADE,∠ADF 大于 90∘(也即为钝角或平角,为了使尾巴不至于翘那么别扭)。
下图就是一个合法的鱼的例子:

其中点的组成相同,但顺序不同的鱼视为不同的鱼,即 ⟨A,B,C,D,E,F⟩ 和 ⟨A,C,B,D,E,F⟩ 视为不同的两条鱼(毕竟鱼也有背和肚子的两面),同理 ⟨A,B,C,D,E,F⟩ 和 ⟨A,B,C,D,F,E⟩ 也可以视为不同的两条鱼(假设鱼尾巴可以打结)。
问给定的 n 个点可以构成多少条鱼。特别的,数据保证 n 个点互不重复。
输入格式
第一行一个正整数 n,代表平面上点的个数。
接下来 n 行每行两个整数 x,y,代表点的横纵坐标。
输出格式
输出一行一个非负整数,代表鱼的个数。
样例
输入
8
-2 0
-1 0
0 1
0 -1
1 0
2 0
3 1
3 -1
输出
16
数据范围与提示
对于前 20% 的数据,保证 n≤10,0≤∣x∣,∣y∣≤5。
对于前 40% 的数据,保证 n≤300,0≤∣x∣,∣y∣≤105。
对于另外 20% 的数据,保证 ∣x∣,∣y∣≤20。
对于所有数据,保证 6≤n≤1000,0≤∣x∣,∣y∣≤109,n 个点互不重复。