//方法一#include<iostream>#include<algorithm>usingnamespace std;constint MAXN =2e5+10;int num[MAXN];intmain(){int N, C;
cin >> N >> C;for(int i =1; i <= N; i++){
cin >> num[i];}sort(num +1, num + N +1);//从小大大排序 int l =1;//定义三个指针 int r1 =1;int r2 =1;longlong ans =0;for(l =1; l <= N; l++)//求每个数对应的 B 的开始位置和结束位置 {while(num[r1]- num[l]<= C && r1 <= N)//r1为结束位置的下一位置 {++r1;}while(num[r2]- num[l]< C && r2 <= N)//r2为开始位置 {++r2;}
ans += r1 - r2;}
cout << ans << endl;return0;}
//方法二#include<iostream>#include<map>usingnamespace std;constint MAXN =2e5+10;int num[MAXN];
map<int,int> m;intmain(){int n, c;long ans =0;
cin >> n >> c;for(int i =1; i <= n; i++){
cin >> num[i];//输入 A
m[num[i]]++;// 记录每个 A 的个数
num[i]= num[i]- c;//每个 A 对应的 B 是多少 }for(int i =1; i <= n; i++){
ans = ans + m[num[i]];//每个 B 的个数和 }
cout << ans << endl;return0;}