时间限制:10000ms
单点时限:1000ms
内存限制:256MB
描述
给定N个整数二元组(X1, Y1), (X2, Y2), ... (XN, YN)。
请你计算其中有多少对二元组(Xi, Yi)和(Xj, Yj)满足Xi + Xj = Yi + Yj且i < j。
输入
第一行包含一个整数N。
以下N行每行两个整数Xi和Yi。
对于70%的数据,1 ≤ N ≤ 1000
对于100%的数据,1 ≤ N ≤ 100000 -1000000 ≤ Xi, Yi ≤ 1000000
输出
一个整数表示答案。
样例输入
5
9 10
1 3
5 5
5 4
8 6
样例输出
2
Xi + Xj = Yi + Yj可以转换成Xi-Yi=-(Xj-Yj)
已AC
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
Map<Integer,Integer> map = new HashMap();
long count=0;
int n = s.nextInt();
int x=0,y=0,z=0;
for(int i=0;i<n;i++) {
x=s.nextInt();
y=s.nextInt();
z=x-y;
if(map.containsKey(-z)) {
count+=map.get(-z);
}
if(map.containsKey(z)) {
map.put(z, map.get(z)+1);
}else {
map.put(z,1);
}
}
System.out.println(count);
}
}