Time Limit: 2 sec / Memory Limit: 256 MB
配点 : 1100 点
問題文
相異なる整数 N 個からなる集合があります。この集合の i 番目に小さい要素は S_i です。この集合を X,Y の 2 つの集合に分割し、
- X に属するどの相異なる 2 つの要素も、その差の絶対値が A 以上
- Y に属するどの相異なる 2 つの要素も、その差の絶対値が B 以上
になるようにしたいです。このような分割としてありうるものの個数を 10^9 + 7 で割ったあまりを求めてください。ただし、X,Y のうち一方が空となるような分割も数えます。
制約
- 入力はすべて整数である。
- 1 ≦ N ≦ 10^5
- 1 ≦ A , B ≦ 10^{18}
- 0 ≦ S_i ≦ 10^{18}(1 ≦ i ≦ N)
- S_i < S_{i+1}(1 ≦ i ≦ N - 1)
入力
入力は以下の形式で標準入力から与えられる。
N A B S_1 : S_N
出力
条件を満たす分割の個数を 10^9 + 7 で割ったあまりを出力せよ。
入力例 1
5 3 7 1 3 6 9 12
出力例 1
5
次の 5 通りの分割方法があります。
- X={1,6,9,12}, Y={3}
- X={1,6,9}, Y={3,12}
- X={3,6,9,12}, Y={1}
- X={3,6,9}, Y={1,12}
- X={3,6,12}, Y={1,9}
入力例 2
7 5 3 0 2 4 7 8 11 15
出力例 2
4
入力例 3
8 2 9 3 4 5 13 15 22 26 32
出力例 3
13
入力例 4
3 3 4 5 6 7
出力例 4
0
Score : 1100 points
Problem Statement
There is a set consisting of N distinct integers. The i-th smallest element in this set is S_i. We want to divide this set into two sets, X and Y, such that:
- The absolute difference of any two distinct elements in X is A or greater.
- The absolute difference of any two distinct elements in Y is B or greater.
How many ways are there to perform such division, modulo 10^9 + 7? Note that one of X and Y may be empty.
Constraints
- All input values are integers.
- 1 ≦ N ≦ 10^5
- 1 ≦ A , B ≦ 10^{18}
- 0 ≦ S_i ≦ 10^{18}(1 ≦ i ≦ N)
- S_i < S_{i+1}(1 ≦ i ≦ N - 1)
Input
The input is given from Standard Input in the following format:
N A B S_1 : S_N
Output
Print the number of the different divisions under the conditions, modulo 10^9 + 7.
Sample Input 1
5 3 7 1 3 6 9 12
Sample Output 1
5
There are five ways to perform division:
- X={1,6,9,12}, Y={3}
- X={1,6,9}, Y={3,12}
- X={3,6,9,12}, Y={1}
- X={3,6,9}, Y={1,12}
- X={3,6,12}, Y={1,9}
Sample Input 2
7 5 3 0 2 4 7 8 11 15
Sample Output 2
4
Sample Input 3
8 2 9 3 4 5 13 15 22 26 32
Sample Output 3
13
Sample Input 4
3 3 4 5 6 7
Sample Output 4
0