/* -*- coding: utf-8 -*- * * 3456.cc: No.3456 Common Difference is D - yukicoder */ #include #include #include using namespace std; /* constant */ const int MAX_N = 100000; /* typedef */ using ll = long long; using mii = map; /* global variables */ int as[MAX_N]; /* subroutines */ /* main */ int main() { int n, d; scanf("%d%d", &n, &d); for (int i = 0; i < n; i++) scanf("%d", as + i); mii lacs, racs; for (int i = 0; i < n; i++) racs[as[i]]++; ll sum = 0; for (int i = 0; i < n; i++) { auto mit = racs.find(as[i]); if (--(mit->second) == 0) racs.erase(mit); auto lmit = lacs.find(as[i] - d); if (lmit != lacs.end()) { auto rmit = racs.find(as[i] + d); if (rmit != racs.end()) sum += (ll)lmit->second * rmit->second; } lacs[as[i]]++; } printf("%ld\n", sum); return 0; }