#include <iostream>
#include <algorithm>
using namespace std;
int a[200005];
int main()
{
long long ans=0;
int n,c,l,r1=1,r2=1;
cin >> n >>c;
for(int i=1;i<=n;i++)
{
cin >> a[i];
}
sort(a+1,a+n+1);
for(l=1;l<=n;l++)
{
while(r1<=n&&a[r1]-a[l]<=c)
r1++;
while(r2<=n&&a[r2]-a[l]<c)
r2++;
ans+=r1-r2;
}
cout << ans;
return 0;
}
个人理解:
数 字 1 1 2 3
下 标 1 2 3 4
!!(当作箭头)
L=1(下标) 时 数字2: 此时R1和R2分别为 4-3=1(计数一次)
L=2(下标) 时 数字2: 此时R1和R2分别为 4-3=1(计数一次)
L=3(下标) 时 数字3: 此时R1和R2分别为 5-4=1(计数一次)