C - Make a Team
解説
/
実行時間制限: 2 sec / メモリ制限: 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