結果
| 問題 | No.3683 サーバー代がもったいない! |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-09-05 14:30:13 |
| 言語 | Ruby (4.0.6) |
| 結果 |
AC
|
| 実行時間 | 560 ms / 2,000 ms |
| + 841µs | |
| コード長 | 621 bytes |
| 記録 | |
| コンパイル時間 | 122 ms |
| コンパイル使用メモリ | 8,960 KB |
| 実行使用メモリ | 63,360 KB |
| 最終ジャッジ日時 | 2026-09-05 14:30:33 |
| 合計ジャッジ時間 | 12,305 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge3_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 27 |
コンパイルメッセージ
Syntax OK
ソースコード
# frozen_string_literal: true
in_n, in_k = gets.chomp.split.map(&:to_i)
in_a = gets.chomp.split.map(&:to_i)
dp = Array.new((in_n + 1) * (in_k + 1), -(10**100))
if in_k > in_n.ceildiv(2)
puts "Impossible"
exit
end
stride = in_k + 1
dp[0] = 0
dp[stride] = 0
dp[stride + 1] = in_a[0]
in_a.each_with_index do |a, i|
next if i == 0
prev2_base = (i-1) * stride
prev_base = (i) * stride
current_base = (i+1) * stride
dp[current_base] = 0
1.upto(in_k) do |k|
dp[current_base + k] = [dp[prev_base + k], dp[prev2_base + k - 1] + a].max
end
end
puts ((in_n).times.map { |n| dp[stride * (n+1) + in_k]}.max)