代码如下
#include <bits/stdc++.h>
typedef long long ll;
using namespace std;
int a[200010];
int main()
{
int n, c;
cin >> n >> c;
for (int i = 0; i < n; i++)
scanf("%d", &a[i]);
sort(a, a + n);
ll ans = 0;
for (int p1 = 0, p2 = 0; p1 < n && p2 < n;)
{
int count1 = 1, count2 = 1;
while (p2 < n && a[p2] - a[p1] < c)
p2++;
while (p1 < n && a[p2] - a[p1] > c)
p1++;
if (p2 >= n || a[p2] - a[p1] < c)
continue;
while (a[p1] == a[++p1])
count1++;
while (a[p2] == a[++p2])
count2++;
ans += count1 * count2;
}
cout << ans;
return 0;
}
大致思路应该没问题