Sumo and Group Activity
题号:NC207574
时间限制:C/C++/Rust/Pascal 1秒,其他语言2秒
空间限制:C/C++/Rust/Pascal 256 M,其他语言512 M
64bit IO Format: %lld

题目描述

Sumo是一个社交达人,他经常辗转各地开展party。

将社区想象为一个坐标轴,给定许多个可以开展party的坐标点,以及Sumo的家的坐标点。Sumo接下来要开展m次party,因此还需要选择m个地点。

Sumo希望知道有多少种选取地点的方案,使得这些方案满足以下条件:
  • 若第i个选择地点的坐标为p_i,那么
  • 若b为家的坐标点,那么,即当前地点到下一个地点的距离要严格小于当前地点到家的距离。
  • 可以选择自己的家作为party地点。
请告诉Sumo有多少种选取party地点的方案,答案可能过大,请输出答案对取模后的结果。

两种方案(k_1,k_2,k_3...k_m)(p_1,p_2,p_3...p_m),若存在,则认为两个方案是不同的。

输入描述:

输入的第一行包含四个空格分隔的整数
n表示有n个备选地点,a表示Sumo最近一次开party的地点序号,b表示Sumo家的地点序号,m表示还要举办party的次数。
接下来一行有n个数,其中x_i代表序号为i的地点的坐标,保证坐标两两不同。(两个地点之间的距离即为坐标之差)

输出描述:

由于答案可能过大,因此只需要输出一个整数,表示总数对取模后的结果。
示例1

输入

复制
5 4 3 1
25 18 20 13 7

输出

复制
2
示例2

输入

复制
5 2 4 2
7 13 18 20 25

输出

复制
2
示例3

输入

复制
5 3 4 1
7 13 18 20 25

输出

复制
0

备注:

对于样例1,Sumo可以选5号地点或2号地点。

对于样例2,Sumo可以选(1号地点 , 2号地点)或者(1号地点 , 3号地点)。若Sumo一开始选3号地点那他接下来就没地方可以选了。