Problem
小佩蒂亚喜欢圆点。最近,他的母亲给了他 n 个位于 OX 线上的点。 Petya 想知道有多少种方法可以选择三个不同的点,使得所选点中最远的两个点之间的距离不超过 d。
请注意,所选三重奏中点的顺序无关紧要。
输入
第一行包含两个整数:n和d (1 ≤ n ≤ 105; 1 ≤ d ≤ 10< sup>9).下一行包含 n 个整数 x1, x2, ..., xn,模数不超过 109 —给 Petya 的点的 x 坐标。
保证输入中点的坐标严格递增。
输出
打印单个整数 —两个最远点之间的距离不超过 d 的点的三元组数。
请不要使用 %lld 说明符在 C++ 中读取或写入 64 位数字。建议使用 cin、cout 流或 %I64d 说明符。
<正文>
输入 |
输出 |
4 3
1 2 3 4
|
4 |
4 2
-3 -2 -1 0
|
2 |
5 19
1 10 20 30 50
|
1 |
表>
<分区>
第一个例子中,任意三个不同的点都适合我们。
在第二个例子中,只有 2 个三元组适合我们:{-3, -2, -1} 和 {-2, -1, 0}。
在第三个例子中,一个三元组适合我们:{1, 10, 20}。