Haskell
Yay, dynamic programming!
import Data.Map qualified as Map
maxJolt :: Int -> [Char] -> Int
maxJolt r xs = read $ maximize r 0
where
n = length xs
maximize =
(curry . (Map.!) . Map.fromList . (zip <*> map (uncurry go)))
[(k, o) | k <- [1 .. r], o <- [r - k .. n - k]]
go k o =
maximum $ do
(x, o') <- drop o $ zip xs [1 .. n - (k - 1)]
return . (x :) $ if k == 1 then [] else maximize (k - 1) o'
main = do
input <- lines <$> readFile "input03"
mapM_ (print . sum . (`map` input) . maxJolt) [2, 12]