C - Make a Team Editorial /

Time Limit: 2 sec / Memory Limit: 1024 MB

配点 : 300

問題文

ラスク君の通う大学の競技プログラミング部には部員が N 人います。i 人目の部員のレートは R_i です。

大学対抗のプログラミングコンテストのために、部員から 3 人を選んでチームを 1 つ作ることになりました。

ここで、チーム内でレートが一番高い人と一番低い人のレートの差が D 以下になるようにします。

このようなチームの作り方が何通りあるか求めてください。

制約

  • 入力はすべて整数である。
  • 3 \leq N \leq 10^5
  • 1 \leq D \leq 10^9
  • 1 \leq R_i \leq 10^9

入力

入力は以下の形式で標準入力から与えられる。

N D
R_1 R_2 \ldots R_N

出力

条件を満たすチームの作り方が何通りあるかを出力せよ。

答えが 32 ビット整数型に収まらない場合があることに注意せよ。


入力例 1

5 400
300 700 1000 800 500

出力例 1

3

(部員 1, 部員 2, 部員 5), (部員 2, 部員 3, 部員 4), (部員 2, 部員 4, 部員 5) の 3 通りあります。


入力例 2

3 1000
2000 2000 4000

出力例 2

0

条件を満たすチームの作り方が 1 つもない場合もあります。


入力例 3

6 314159265
358979323 846264338 327950288 419716939 93751058 209749445

出力例 3

7