Module: 两个指针


Problem

4 /11


一条直线上的点

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 说明符。
  <正文> <分区> 
第一个例子中,任意三个不同的点都适合我们。
在第二个例子中,只有 2 个三元组适合我们:{-3, -2, -1} 和 {-2, -1, 0}。
在第三个例子中,一个三元组适合我们:{1, 10, 20}。
 
输入 输出
4 3
1 2 3 4
4
4 2
-3 -2 -1 0
2
5 19
1 10 20 30 50
1