#codeforcesP2009D. Satyam and Counting

Satyam and Counting

问题描述

SatyamSatyam 得到了一些位于二维坐标平面上的 nn 个不同的点,保证所有点的 yy 坐标满足 0y10 ≤ y ≤ 1SatyamSatyam 需要通过从这些点中选出三个不同的点作为顶点来构成不同的非退化直角三角形。

两个三角形 aabb 被认为是不同的,如果存在一个点 vv,它是三角形 aa 的顶点,但不是三角形 bb 的顶点。

非退化直角三角形 是指面积大于零,且包含一个 9090 度角的三角形。

输入格式

第一行包含一个整数 tt (1t104)(1 ≤ t ≤ 10^4),表示测试用例的数量。

每个测试用例的第一行包含一个整数 nn (3n2×105)(3 ≤ n ≤ 2×10^5),表示点的数量。

接下来的 nn 行中,每行包含两个整数 xixiyiyi (0xin,0yi1)(0 ≤ xi ≤ n, 0 ≤ yi ≤ 1),表示 SatyamSatyam 可以选择的第 ii 个点。保证所有点 (xi,yi)(xi, yi) 都是不同的。

输出格式

对于每个测试用例,输出一个整数,表示可以通过选取三个点构成的不同的非退化直角三角形的数量。

输入样例:

3
5
1 0
1 1
3 0
5 0
2 1
3
0 0
1 0
3 0
9
1 0
2 0
3 0
4 0
5 0
2 1
7 1
8 1
9 1

输出样例:

4
0
8

样例解释

对于第一个测试用例,有四个满足条件的三角形。