题目描述
有 n 个人参加一场比赛,小多是其中之一。这里,n 一定是 2 的正整数次幂。
参加比赛的 n 个人排成一队,从左到右分别编号为 1,2,…,n。第 i 个人有自己的能力值 ai。能力值为 x 的人和能力值为 y 的人决斗,胜者为前者的概率是 x/(x+y),为后者的概率是 y/(x+y)。
比赛的过程如下:
- 若现在只剩下一个人,这个人就是最终赢家。
- 否则,让现在队列里排在最左边的两个人,不妨设为 A 和 B,进行决斗。A 和 B 中的败者离开比赛,胜者回到队列的最右边。
现在,小多已经摸清了所有人的能力值(包括自己),也知道了除了自己以外其它人在队列中的顺序,但他不知道自己在队列中的位置。把自己插进剩下 n−1 个人的队列中,共有 n 种可能。对于每种可能,请你求出小多成为最终赢家的概率。
输入格式
第一行两个正整数 n,x,分别为人数和小多的能力值。
第二行 n−1 个正整数 a1∼an−1,从左到右地描述队列中除了小多外的选手的能力值。
输出格式
输出 n 个实数,第 i 个表示:如果把小多插在队列第 i−1 个人和第 i 个人之间(i=1 时插在第一个人前面,i=n 时插在第 n−1 个人后面),小多的胜率是多少。
只要你的输出与标准答案的绝对误差在 10−9 以内就算对。
样例
样例输入 1
4 2
1 1 1
样例输出 1
0.444444444444
0.444444444444
0.444444444444
0.444444444444
样例 1 解释
无论小多在哪个位置,要赢得比赛,他都需要连胜两局,而这两局中对手的能力值为 1,他的能力值为 2,胜率为 2/3,故最终胜率为 (2/3)2=4/9。
样例输入 2
8 4
1 2 3 4 5 6 7
样例输出 2
0.202724628508
0.202724628508
0.168937190423
0.168937190423
0.098444548984
0.098444548984
0.088968603093
0.088968603093
数据范围
本题共 10 个测试点,每个测试点 10 分。所有数据满足 2≤n≤4096,1≤x,ai≤104,存在正整数 k 使得 n=2k。
- 测试点 1,2 满足 ai 全部相同。
- 测试点 3 满足 n=4。
- 测试点 4 满足 n=8。
- 测试点 5 满足 n=32。
- 测试点 6 满足 n=256。
- 测试点 7,8,9,10 无特殊性质。
时间限制:1s
空间限制:512MB