排序后遍历,每个元素向后找m以内差距的元素个数乘二求和
#include <cmath>
#include <cstdio>
#include <string>
#include <cstring>
#include <iostream>
#include <algorithm>
using namespace std;
int hgt[1001];
int main()
{
int n,m,cnt,ans=0;
cin>>n>>m;
memset(hgt,0,sizeof hgt);
for(int i=0;i<n;i++)
{
cin>>hgt[i];
}
sort(hgt,hgt+n);
for(int i=0;i<n;i++)
{
cnt=0;
for(int j=i+1; hgt[j]<=hgt[i]+m && j<n; j++ )
{
cnt++;
}
ans+= 2*cnt;
}
printf("%d",ans);
return 0;
}