import Data.List
import Text.Printf
main :: IO ()
main = do
  [_, pickupDice] <- getInts
  dices <- getInts
  printf "%.6f\n" $ getMaxMean pickupDice 0 dices

-- | 最大の平均値を取得する
--
-- >>> getMaxMean 4 0 [17,13,13,12,15,20,10,13,17,11]
-- 32.0
getMaxMean :: Int -> Float -> [Int] -> Float
getMaxMean _ currentMax [] = currentMax
getMaxMean pickupDice currentMax (x:xs)
  | length xs < pickupDice - 1 = currentMax
  | otherwise = getMaxMean pickupDice newMax xs
  where
    currentMean = sum $ map calcMean $ take pickupDice xs
    newMax = if currentMax > currentMean then currentMax else currentMean

-- | ダイスの平均値を出す
--
-- >>> calcMean 1
-- 1.0
-- >>> calcMean 2
-- 1.5
-- >>> calcMean 3
-- 2.0
-- >>> calcMean 5
-- 3.0
-- >>> calcMean 6
-- 3.5
calcMean :: Int -> Float
calcMean 1 = realToFrac 1 :: Float
calcMean x = (realToFrac(x) / 2) + 0.5 :: Float

isUniq :: [String] -> String
isUniq [] = "YES"
isUniq (x:xs) 
  | x `elem` xs  = "NO"
  | otherwise = isUniq xs

getInts = do
  x <- getLine
  let y = (map $ read) $ words x :: [Int]
  return y
