結果

問題 No.258 回転寿司(2)
ユーザー code-devo
提出日時 2016-02-06 19:13:32
言語 Ruby
(3.4.1)
結果
AC  
実行時間 98 ms / 2,000 ms
コード長 455 bytes
コンパイル時間 123 ms
コンパイル使用メモリ 7,680 KB
実行使用メモリ 13,824 KB
最終ジャッジ日時 2024-11-06 18:57:25
合計ジャッジ時間 9,855 ms
ジャッジサーバーID
(参考情報)
judge5 / judge4
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 4
other AC * 67
権限があれば一括ダウンロードができます
コンパイルメッセージ
Syntax OK

ソースコード

diff #

gets
vs = gets.split.map(&:to_i)

S = Struct.new(:val, :idxs)
a = []

a[0] = S.new(vs[0], [0]) if vs.size > 0
a[1] = S.new(vs[1], [1]) if vs.size > 1
a[2] = S.new(vs[0] + vs[2], [0, 2]) if vs.size > 2

for i in 3...vs.size do
  s_prev = a[i-3].val > a[i-2].val ? a[i-3] : a[i-2]
  a[i] = S.new(s_prev.val + vs[i], s_prev.idxs + [i])
end

s_max = a.size >= 2 && a[-2].val > a[-1].val ? a[-2] : a[-1]
puts s_max.val
puts s_max.idxs.map{|i| i + 1}.join(" ")
0