#P3940. Grey Area

Grey Area

描述

格雷博士是一位数据分析师,他每天都会可视化来自世界各地的数据的各个方面。他非常擅长使用复杂的可视化工具,但他最喜欢的还是一个简单的自制直方图生成器。

图1是他的直方图生成器自动生成的直方图示例。直方图是一种将数值出现频率以条形图形式直观展示的工具。在这个例子中,区间0–9中的值出现了5次,区间10–19中的值出现了3次,区间20–29和30–39中的值各出现了1次。

格雷博士的直方图生成器是一个简单的工具。首先,直方图的高度是固定的,也就是说,最高条形的高度始终相同,其他条形的高度则会按比例自动调整。其次,条形的宽度也是固定的。它只能生成等宽区间的直方图,即直方图的每个区间宽度应相同(在上述示例中为10)。最后,每个区间的条形都用灰色绘制,最左侧和最右侧区间的颜色分别为黑色和白色,且条形的暗度从左到右以相同的速率单调递减。例如,在图1中,四个条形的暗度级别分别为1、23\frac{2}{3}13\frac{1}{3}和0。

在这个问题中,你需要估算在纸上打印直方图时的墨水消耗量。绘制一个条形所需的墨水量与它的面积和暗度都成正比。

输入

输入由多个数据集组成,每个数据集包含整数并指定直方图生成器的值表和区间,格式如下:

n w

v1

v2

.

.

.

vn

n是直方图中值出现的总数,第一行之后的n行每行包含一个值。请注意,同一个值可能会出现多次。

w是区间宽度。如果0 ≤ v < w,则值v在第一个(即最左侧)区间内;如果w ≤ v < 2w,则值v在第二个区间内,依此类推。请注意,从0(含)到w(不含)的区间应被视为最左侧区间,即使该区间内没有值出现。最后一个(即最右侧)区间是包含数据集中最大值的区间。

你可以假设以下条件:

1 ≤ n ≤ 100

10 ≤ w ≤ 50

对于1 ≤ i ≤ n,0 ≤ vi ≤ 100

你还可以假设最大值不小于w。这意味着直方图有多个区间。

输入的结束由一行包含两个零的行表示。

输出

对于每个数据集,输出一行包含打印直方图所消耗的墨水量。

绘制一个最高的黑色条形需要1单位墨水。假设每个直方图除了绘制条形外,用于绘制线条和字符等各种用途还会消耗0.01单位墨水(见图1)。例如,打印图1中的直方图所消耗的墨水量为:

每个输出值应以小数形式表示,误差可小于10510^{-5}

输入数据 1

3 50
100
0
100
3 50
100
100
50
10 10
1
2
3
4
5
16
17
18
29
30
0 0

输出数据 1

0.51
0.26
1.4766666666666667