paiza POH Vol.4 野田さん攻略

解答

#!/usr/bin/env ruby

file = $stdin
lines = file.readlines
file.close

t, n = lines[0].split.map{|x| x.to_i}
m_list = lines[1, n].map{|x| x.to_i}

max_sum = sum = m_list[0, t].inject(0){|sum, x| sum + x}

for i in t..n - 1
  sum += -m_list[i - t] + m_list[i]
  max_sum = [max_sum, sum].max
end
  
puts max_sum

コードの覚え書き

  • 3番目のみ計算量を考慮して差分だけ計算するようにした

解説を読んでのメモ

  • しゃくとり法というらしい。累積和はあんまり道具として身についていないな。