e-olymp
Məsələlər

Тройной прыжок

Тройной прыжок

Тройной прыжок совершается следующим образом. Прыгун разгоняется, добегает до определенной отметки и совершает три последовательных прыжка. Победителем является тот, чья суммарная длина прыжков наибольшая.

Вы принимаете участие в соревновании и прыгаете последним. Все Ваши соперники уже совершили прыжки, поэтому их результаты известны.

Первый свой прыжок Вы уже совершили, его длина равна first. Длина каждого из оставшихся прыжков может с одинаковой вероятностью принимать любое значение из отрезка [lower, upper], и не обязательно быть целым. Вам необходимо вычислить вероятность того, что Вы займете i - ое место. Место, занятое Вами, равняется единице плюс количество соперников, которые прыгнули дальше Вас.

Входные данные

Состоит из нескольких тестов. Первая строка каждого теста содержит значения lower, upper, first (1 ≤lower≤ 1000, lowerupper1000, lowerfirstupper) и количество Ваших соперников n (1 ≤n≤ 50). Вторая строка теста содержит n целых чисел от 1 до 3000 - длины тройных прыжков всех Ваших соперников.

Выходные данные

Для каждого теста в отдельной строке вывести n + 1 действительных чисел - соответственно вероятности того что Вы займете первое, второе, третье, ..., последнее место. Все вероятности следует выводить с 4 десятичными знаками.

Zaman məhdudiyyəti 1 saniyə
Yaddaşı istafadə məhdudiyyəti 64 MiB
Giriş verilənləri
1 2 1 4
1 2 3 4
1 10 5 8
1 2 3 5 10 11 12 19
Çıxış verilənləri
0.5000 0.5000 0.0000 0.0000 0.0000
0.2222 0.6235 0.0556 0.0432 0.0556 0.0000 0.0000 0.0000 0.0000