题目描述
要求计算出所有 A - B = CA−B=C 的数对的个数(不同位置的数字一样的数对算不同的数对)。
输入格式
输入共两行。
第一行,两个整数 N,C。
第二行,N 个整数,作为要求处理的那串数。
输出格式
一行,表示该串数中包含的满足A−B=C 的数对的个数。
输入输出样例
输入 #1
4 1 1 1 2 3
输出 #1
3
说明/提示
对于 75% 的数据,1≤N≤2000。
对于 100% 的数据,1≤N≤2×105。
保证所有输入数据绝对值小于 2^30,且 C≥1。
/*
* @Description: To iterate is human, to recurse divine.
* @Autor: Recursion
* @Date: 2022-03-01 11:07:44
* @LastEditTime: 2022-03-01 11:17:26
*/
#include<bits/stdc++.h>
using namespace std;
long long int n,k;
long long int a[(int)1e6+10];
int main()
{
while(cin>>n>>k){
for(int i=0;i<n;i++)
cin>>a[i];
sort(a,a+n);
long long int ans=0;
for(int i=0;i<n;i++){
ans+=(upper_bound(a,a+n,a[i]+k)-a)-(lower_bound(a,a+n,a[i]+k)-a);
}
cout<<ans<<endl;
}
}