pairs
题目连接HDU - 5178
题意,给出一个数列x[],找出使得|x[b]-x[a]|<=k的组合<a,b>的对数,其中a<b,这对a,b谁前谁后没有影响,只是去掉重复的如有了<a,b>就不能有<b,a>,前边是绝对值,所以谁减谁就无所谓了;
思路不就有了?排个序,然后尺取不就可以了;
#include <bits/stdc++.h>
using namespace std;
int x[100010];
int main(){
int T;
scanf("%d", &T);
while(T--){
int n, k;
scanf("%d%d", &n, &k);
for(int i=0; i<n; i++)
scanf("%d", &x[i]);
sort(x, x+n);
long long ans=0;
for(int i=0, j=1; i<n-1; i++){
while(j<n&&x[j]-x[i]<=k) j++;
ans+=j-i-1;
if(i>=j) j++;
}
printf("%lld\n", ans);
}
return 0;
}