atcoder#AGC009C. Division into Two

Division into Two

题目描述

相異なる整数 N N 個からなる集合があります。この集合の i i 番目に小さい要素は Si S_i です。この集合を X,Y X,Y 2 2 つの集合に分割し、

  • X X に属するどの相異なる 2 2 つの要素も、その差の絶対値が A A 以上
  • Y Y に属するどの相異なる 2 2 つの要素も、その差の絶対値が B B 以上

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

输入格式

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

N N A A B B S1 S_1 : SN S_N

输出格式

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

题目大意

给定 nn 个不同的整数,求将它们分成两个集合 X,YX,Y,并且 XX 集合中任意两个数的差大于等于 AAYY 集合中任意两个数的差大于等于 BB 的方案数。

感谢@wxgwxg 提供翻译

5 3 7
1
3
6
9
12
5
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

提示

制約

  • 入力はすべて整数である。
  • 1  N  105 1\ ≦\ N\ ≦\ 10^5
  • 1  A , B  1018 1\ ≦\ A\ ,\ B\ ≦\ 10^{18}
  • 0  Si  1018(1  i  N) 0\ ≦\ S_i\ ≦\ 10^{18}(1\ ≦\ i\ ≦\ N)
  • Si < Si+1(1  i  N  1) S_i\ <\ S_{i+1}(1\ ≦\ i\ ≦\ N\ -\ 1)

Sample Explanation 1

次の 5 5 通りの分割方法があります。 - X= X= {1,6,9,12 1,6,9,12 }, Y= Y= {3 3 } - X= X= {1,6,9 1,6,9 }, Y= Y= {3,12 3,12 } - X= X= {3,6,9,12 3,6,9,12 }, Y= Y= {1 1 } - X= X= {3,6,9 3,6,9 }, Y= Y= {1,12 1,12 } - X= X= {3,6,12 3,6,12 }, Y= Y= {1,9 1,9 }