結果
問題 |
No.258 回転寿司(2)
|
ユーザー |
![]() |
提出日時 | 2020-05-10 11:04:06 |
言語 | Crystal (1.14.0) |
結果 |
AC
|
実行時間 | 5 ms / 2,000 ms |
コード長 | 388 bytes |
コンパイル時間 | 11,692 ms |
コンパイル使用メモリ | 296,512 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-06-30 20:09:30 |
合計ジャッジ時間 | 15,018 ms |
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 67 |
ソースコード
n = read_line.to_i a = read_line.split.map &.to_i dp = Array.new(n, 0) prev = Array.new(n, -1) n.times do |i| if i < 2 dp[i] = a[i] else pos = dp[0...i.pred].each_with_index.max[1] dp[i] = dp[pos] + a[i] prev[i] = pos end end ans = [dp.each_with_index.max[1]] while prev[ans[-1]] != -1 ans << prev[ans[-1]] end puts dp.max puts ans.reverse.map(&.succ).join(' ')