#XSS2026T08. It's Time for hrz to Sleep

It's Time for hrz to Sleep

题目描述

hrz 学长一直被失眠所困扰,因为他想睡着的条件太苛刻了。只有当昨天和前天睡眠时间的差值为 xx 时,他今天才可以安稳地睡着。

由于长期失眠,hrz 学长的记忆力出现了一个严重的问题——他记不住前两天的睡觉时长了!

但是他能模糊的记起很多数字,他坚信前两天的睡眠时长就在其中。

你现在要做的是从这些数字中找出两个差值为 xx 的数字分别作为 hrz 学长昨天和前天的睡眠时长,并统计可行解的数量。特别的,x≠0x \ne 0 。

形式化的:给你一个长度为 nn 的数组 a1,a2,…,ana_1,a_2,\dots,a_n,以及一个整数 xx,请你求满足 ai−aj=xa_i-a_j=x 的有序二元对 (i,j)(i,j) 的数量,其中 i≠ji \ne j,不同位置的相同数字视为不同。

输入格式

第一行输入一个正整数 TT,表示数据组数, 接下来输入 TT 组测试数据。每组测试数据包含两行:

第一行输入一个正整数 nn ,和一个整数 xx。

第二行输入 nn 个整数 a1,a2,…,ana_1,a_2,\dots,a_n。

保证单个测试点内所有测试数据的 nn 之和不超过 10510^5。

输出格式

对于每组数据输出一个整数,表示找到的满足条件的有序二元对数量。

3
5 2
1 2 3 4 5
4 1
1 1 2 3
5 -3
-1 -1 0 1 2
3
3
2
2
6 5
5 5 0 0 5 5
6 -1
-2 -2 1 2 3 3
8
3

说明/提示

数据规模与约定

  • 1≤T≤30001 \le T \le 3000;
  • 1≤n≤1051\le n\le 10^5;
  • −109≤x≤109, x≠0-10^9 \le x\le10^9,\ x\ne 0;
  • −109≤ai≤109-10^9 \le a_i\le 10^9;
  • 对于所有测试用例,∑n≤105\sum n \le 10^5。