# Enter your code here. Read input from STDIN. Print output to STDOUT def solve(c, k, i = 0, cache = []) return 0 if i >= c.size return cache[i] if cache[i] prices = [] 0.upto (k) do |j| return 0 if i + j >= c.size prices << (c[i + j] + solve(c, k, i + j + 1, cache)) end r = prices.min cache[i] = r r end n, k = gets.split(' ').map(&:to_i) c = gets.split(' ').map(&:to_i) if k == 0 p c.reduce(:+) elsif k >= n p c.min else p solve(c, k) end