#include <stdio.h>
#include <stdlib.h>
#define N 200000
int a[N];
int cmp( const void *a , const void *b )
{
return *(int *)a - *(int *)b; /* 升序 */
}
int find(int start, int end, int x)
{
int left, mid, right;
left = start;
right = end;
while(left <= right) {
mid = (left + right) / 2;
if(a[mid] == x) {
int count = 1, i;
i = mid - 1;
while(i >= start && a[i] == x)
count++, i--;
i = mid + 1;
while(i <= end && a[i] == x)
count++, i++;
return count;
} else if(a[mid] < x)
left = mid + 1;
else // if(a[mid] > x
right = mid - 1;
}
return 0;
}
int main(void)
{
int n, c, i;
scanf("%d%d", &n, &c);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
qsort(a, n, sizeof(int), cmp);
int count = 0;
for(i=0; i<n-1; i++)
count += find(i + 1, n - 1, a[i] + c);
printf("%d\n", count);
return 0;
}
/**************************************************************
Problem: 1767
User: admin
Language: C
Result: Accepted
Time:6 ms
Memory:1924 kb
****************************************************************/