http://acm.hdu.edu.cn/showproblem.php?pid=5178
给自己留的坑:为什么不能从0开始存?
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
#include <set>
using namespace std;
#define N 100050
int a[N];
int main()
{
int T,n,k;
scanf("%d",&T);
while(T--)
{
scanf("%d %d",&n,&k);
for(int i=1; i<=n; i++)
scanf("%d",&a[i]);
sort(a+1,a+1+n);
long long ans=0;
for(int i=1; i<=n; i++)
{
//int l=lower_bound(a+i+1,a+n+1,a[i]-k)-a-1;
int r=upper_bound(a+i+1,a+n+1,a[i]+k)-a-1;
ans=ans+r-i;
}
printf("%lld\n",ans);
}
return 0;
}