import java.util.Scanner;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner scanner=new Scanner(System.in);
int n=scanner.nextInt();
int c=scanner.nextInt();
int count=0;
TreeMap<Integer, Integer> map=new TreeMap<>();
for (int i = 0; i < n; i++) {
int a=scanner.nextInt();
map.put(a, map.getOrDefault(a, 0)+1);
}
for (Integer i : map.keySet()) {
if(map.containsKey(i+c)) {
count+=map.get(i+c)*map.get(i);
}
}
System.out.println(count);
}
}
这题如果使用数组来暴力求解,一个测试用例都过不了,这道题应该用平衡二叉树,并且键来存数据,值来存个数。对于每一对符合条件的两个数,我们应该把它们的数量相乘,我一开始使用求最大值,竟然10个过了9个,笑了。



京公网安备 11010502036488号