from builtins import print





def comb(n, m) :

    ans = 1

    for i in range(n) :

        ans *= i+1

    for i in range(m) :

        ans //= i+1

    for i in range(n-m) :

        ans //= i+1

    return ans





N, A, B = map(int, input().split())

val = list(reversed(sorted((map(int, input().split())))))



ret = 0



prev = [0, 1]

for i in range(A, B+1) :

    cur = [ sum( [ val[j] for j in range(i) ]) , i]

    if i > A :

        if prev[0] * cur[1] > prev[1] * cur[0] :

            break

    cntLarge = [ 1 if v > val[A] else 0 for v in val  ].count(1)

    ret += comb( val.count(val[i-1]) ,i - cntLarge)

    prev = cur



print(format(prev[0] / prev[1], '.12f'))

print(ret)

import math



def comb(n, m) :

    fact = math.factorial

    return fact(n) // fact(m) // fact(n-m)



N, A, B = list(map(int, input().split()))

val = list(reversed(sorted(map(int, input().split()))))



ret = 0

prev = [0, 1]

for i in range(A, B + 1):

    cur = [sum([val[j] for j in range(i)]), i]

    if i > A and prev[0] * cur[1] > prev[1] * cur[0]:

        break

    ret += comb(val.count(val[i-1]), val[:i].count(val[i-1]))

    prev = cur



print((format(prev[0] / prev[1], '.12f')))

print(ret)

from builtins import print


def comb(n, m):
    ans = 1
    for i in range(n):
        ans *= i + 1
    for i in range(m):
        ans //= i + 1
    for i in range(n - m):
        ans //= i + 1
    return ans


N, A, B = map(int, input().split())
val = list(reversed(sorted((map(int, input().split())))))
ret = 0
prev = [0, 1]
for i in range(A, B + 1):
    cur = [sum([val[j] for j in range(i)]), i]
    if i > A:
        if prev[0] * cur[1] > prev[1] * cur[0]:
            break
    cntLarge = [1 if v > val[A] else 0 for v in val].count(1)
    ret += comb(val.count(val[i - 1]), i - cntLarge)
    prev = cur
print(format(prev[0] / prev[1], ".12f"))
print(ret)

import math


def comb(n, m):
    fact = math.factorial
    return fact(n) // fact(m) // fact(n - m)


N, A, B = list(map(int, input().split()))
val = list(reversed(sorted(map(int, input().split()))))
ret = 0
prev = [0, 1]
for i in range(A, B + 1):
    cur = [sum([val[j] for j in range(i)]), i]
    if i > A and prev[0] * cur[1] > prev[1] * cur[0]:
        break
    ret += comb(val.count(val[i - 1]), val[:i].count(val[i - 1]))
    prev = cur
print((format(prev[0] / prev[1], ".12f")))
print(ret)

-from builtins import print +import math -    ans = 1 -    for i in range(n): -        ans *= i + 1 -    for i in range(m): -        ans //= i + 1 -    for i in range(n - m): -        ans //= i + 1 -    return ans +    fact = math.factorial +    return fact(n) // fact(m) // fact(n - m) -N, A, B = map(int, input().split()) -val = list(reversed(sorted((map(int, input().split()))))) +N, A, B = list(map(int, input().split())) +val = list(reversed(sorted(map(int, input().split())))) -    if i > A: -        if prev[0] * cur[1] > prev[1] * cur[0]: -            break -    cntLarge = [1 if v > val[A] else 0 for v in val].count(1) -    ret += comb(val.count(val[i - 1]), i - cntLarge) +    if i > A and prev[0] * cur[1] > prev[1] * cur[0]: +        break +    ret += comb(val.count(val[i - 1]), val[:i].count(val[i - 1])) -print(format(prev[0] / prev[1], ".12f")) +print((format(prev[0] / prev[1], ".12f")))