Google Code Jam/Text Messaging Outrage
From HaskellWiki
< Google Code Jam(Difference between revisions)
Current revision
Solution
main = (enumFromTo (1::Int) <$> readLn) >>= mapM_ go where go i = do [p,k,l] <- map read . words <$> getLine nn <- map read . words <$> getLine printf "Case #%i: %i\n" i (solve k nn) solve :: Int -> [Integer] -> Integer solve k l = let rounds = map sum $ chunks k $ sortBy (flip compare) l in sum $ zipWith (*) [1..] rounds chunks n [] = [] chunks n as = bs : chunks n cs where (bs,cs) = splitAt n as
