小红的好三角形
题号:NC317517
时间限制:C/C++/Rust/Pascal 3秒,其他语言6秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

\hspace{15pt}小红定义一个三角形是好三角形,当且仅当它是一个非退化的等腰三角形,且它的底边与某个坐标轴平行。
\hspace{15pt}现在给定平面上的 n 个互不相同的点,你需要从中选出 3 个不同的点。请你求出,有多少种选法能够使这 3 个点构成一个好三角形,我们认为两种方案不同,当且仅当选出的点集合不同。

【名词解释】
\hspace{15pt}非退化三角形:三条边长均大于 0 且任意两边之和均大于第三边的三角形。
\hspace{15pt}等腰三角形:至少有两边相等的三角形。等腰三角形中,相等的两条边称为这个三角形的腰,另一边叫作底边。

        注:请python选手使用pypy3进行提交!

输入描述:

\hspace{15pt}第一行输入一个整数 n\left(1 \leq n \leq 3000 \right)
\hspace{15pt}接下来 n 行,每行输入两个整数 x_i,y_i-10^9 \leq x_i,y_i \leq 10^9),表示一个点的坐标。
\hspace{15pt}保证所有点两两不同。

输出描述:

\hspace{15pt}输出一个整数,表示方案数。
示例1

输入

复制
5
0 0
2 0
1 1
1 -2
3 3

输出

复制
2

说明

\hspace{15pt}(0,0),(2,0),(1,1) 可以构成一个好三角形,底边为水平的线段 [(0,0),(2,0)]
\hspace{15pt}(0,0),(2,0),(1,-2) 也可以构成一个好三角形。
\hspace{15pt}不存在其他合法方案,因此答案为 2。