题目描述
弹珠赛跑是一种非常有趣的玩弹珠的方式,你今天也想尝试一下。
x 轴负半轴有 n 个起跑点位,第 i 个点位的坐标为 xi。总共有 m 个弹珠,其中 m 是奇数,第 i 个弹珠的移动速度为 vi。在一场比赛中,每一个弹珠都会等概率地随机选择一个起跑点位,不同的弹珠可以选到相同的点位。比赛开始时,所有弹珠同时出发,向 x 正半轴方向一直移动。令 ci 为第 i 个弹珠选择的起跑点位编号,不难得出在时间为 t 时第 i 个弹珠的坐标为 xci+vi⋅t。
你是个独特的弹珠爱好者,并不在乎哪个弹珠最快。你只想知道这 m 个弹珠的所有坐标的中位数恰好在原点(即 x=0)的时间点。一个长度为奇数 m 的序列的中位数是从小到大排序后下标为 2m+1 的数(下标从 1 开始)。由于赛跑还没开始,弹珠的起跑点位还没有确定,所以你想知道这个答案的数学期望。为了避免实数误差,你只需要输出这个答案在 109+7 模意义下的结果(详情见输出格式)。
输入格式
第一行两个正整数 n 和 m (1≤n,m≤500,且 m 为奇数),表示起跑点位个数和弹珠的个数。
第二行 n 个整数 x1,x2,…,xn (−109≤xi<0),表示每个起跑点位的坐标。保证所有 xi 互不相同。
第三行 m 个整数 v1,v2,…,vm (1≤vi≤109),表示每个弹珠的移动速度。
输出格式
输出一行一个整数,表示答案的数学期望对 109+7 取模后的结果。
令 M=109+7。可以证明,答案能够表示为最简分数 qp,其中 p 和 q 是正整数且 q≡0(modM)。则你需要输出 p⋅q−1(modM),q−1 表示 q 在模 M 意义下的乘法逆元。换句话说,输出满足 0≤x<M 且 x⋅q≡p(modM) 的整数 x。可以证明,符合条件的 x 是唯一的。
2 3
-4 -5
1 2 3
250000004
3 3
-4 -5 -6
1 2 3
500000006
5 5
-4 -5 -6 -10 -2
1 2 3 2 4
434986672
提示
对于第一个样例,三个弹珠的速度分别为 1,2,3,考虑三个弹珠分别的初始坐标:
- −4,−4,−4:t=2 的时候,三个弹珠的坐标分别为 −2,0,2,中位数恰好在原点。
- −4,−4,−5:t=2 的时候,三个弹珠的坐标分别为 −2,0,1,中位数恰好在原点。
- −4,−5,−4:t=2.5 的时候,三个弹珠的坐标分别为 −1.5,0,3.5,中位数恰好在原点。
- (−4,−5,−5), (−5,−4,−4), (−5,−4,−5), (−5,−5,−4), (−5,−5,−5) 的时候同理,中位数恰好在原点的时间分别为 t=2.5, t=2, t=2, t=2.5, t=2.5。
综上,期望时间为 $\frac{2 + 2 + 2.5 + 2.5 + 2 + 2 + 2.5 + 2.5}{8} = \frac{9}{4}$,因此你需要输出 9⋅4−1mod(109+7)=250000004。