#56. 三角形

三角形

附加文件

题目描述

平面上有 NN 个点,位置两两不同。现在要从中选择三个点构成一个直角三角形,要求两条直角边分别与坐标轴平行。

求所有可能构成的三角形的面积之和。面积之和可能很大,你只需要输出面积之和的两倍再除以 (109+7)(10^9+7) 的余数。

输入格式

第一行:一个整数 NN

接下来 NN 行,每行两个整数 XiX_iYiY_i 表示一个点的坐标。

输出格式

一个整数,表示面积之和的两倍再除以 (109+7)(10^9+7) 的余数。

样例输入

4
0 0
0 1
1 0
1 2

样例输出

3

样例解释:

点 (0,00,0)、(1,01,0) 和 (1,21,2) 组成了一个面积为 11 的三角形,(0,00,0)、(1,01,0) 和 (0,10,1) 组成了一个面积为 0.50.5 的三角形。所以答案为 2×(1+0.5)=32\times (1+0.5)=3

数据范围:

  • 20% 的数据:N=200N = 200
  • 另外 20% 的数据:N5000N ≤ 5000
  • 100% 的数据:3N105,104Xi,Yi1043 ≤ N ≤ 10^5, -10^4 ≤ X_i, Y_i ≤ 10^4