Module: 두 개의 포인터


Problem

4 /11


라인의 포인트

Problem

작은 Petya는 점을 좋아합니다. 최근에 그의 어머니는 그에게 OX선 위에 있는 n개의 포인트를 주었습니다. Petya는 선택한 점 중 가장 먼 두 점 사이의 거리가 d를 초과하지 않도록 세 개의 다른 점을 선택할 수 있는 방법이 몇 개인지 궁금했습니다.
선택한 트리오 내의 포인트 순서는 중요하지 않습니다.
<사업부>
입력
첫 번째 줄에는 n과 d(1 ≤ n ≤ 105; 1 ≤ d ≤ 10< sup>9). 다음 줄은 n개의 정수 x1, x2, ..., xn을 포함하며 모듈로 109을 초과하지 않습니다. Petya에게 주어진 포인트의 x 좌표.
입력 포인트의 좌표가 엄격하게 증가함을 보장합니다.
<사업부>
출력
단일 정수 인쇄 — 가장 먼 두 지점 사이의 거리가 d를 초과하지 않는 지점의 트리플 수.
C++에서 64비트 숫자를 읽거나 쓰기 위해 %lld 지정자를 사용하지 마십시오. 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