$n = gets.to_i $v = gets.strip.split.map{|e| e.to_i} $dp = {} $n.times {|i| $dp[i] = {}} def recursive i, now if i >= $n return now end if $dp[i].key?(now) return $dp[i][now] end # 今回の皿を取る場合 a = recursive(i + 2, now + $v[i]) # 見送る場合 b = recursive(i + 1, now) max = [a, b].max $dp[i][now] = max end puts recursive 0, 0