atcoder#AGC009C. Division into Two

Division into Two

配点 : 11001100

問題文

相異なる整数 NN 個からなる集合があります。この集合の ii 番目に小さい要素は SiS_i です。この集合を X,YX,Y22 つの集合に分割し、

  • XX に属するどの相異なる 22 つの要素も、その差の絶対値が AA 以上
  • YY に属するどの相異なる 22 つの要素も、その差の絶対値が BB 以上

になるようにしたいです。このような分割としてありうるものの個数を 109+710^9 + 7 で割ったあまりを求めてください。ただし、X,YX,Y のうち一方が空となるような分割も数えます。

制約

  • 入力はすべて整数である。
  • 1N1051 \leq N \leq 10^5
  • 1A,B10181 \leq A , B \leq 10^{18}
  • 0Si1018(1iN)0 \leq S_i \leq 10^{18}(1 \leq i \leq N)
  • Si<Si+1(1iN1)S_i < S_{i+1}(1 \leq i \leq N - 1)

入力

入力は以下の形式で標準入力から与えられる。

NN AA BB

S1S_1

:

SNS_N

出力

条件を満たす分割の個数を 109+710^9 + 7 で割ったあまりを出力せよ。

5 3 7
1
3
6
9
12
5

次の 55 通りの分割方法があります。

  • X=X={1,6,9,121,6,9,12}, Y=Y={33}
  • X=X={1,6,91,6,9}, Y=Y={3,123,12}
  • X=X={3,6,9,123,6,9,12}, Y=Y={11}
  • X=X={3,6,93,6,9}, Y=Y={1,121,12}
  • X=X={3,6,123,6,12}, Y=Y={1,91,9}
7 5 3
0
2
4
7
8
11
15
4
8 2 9
3
4
5
13
15
22
26
32
13
3 3 4
5
6
7
0