結果
| 問題 | No.9 モンスターのレベル上げ |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-01-27 21:44:34 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 3,591 ms / 5,000 ms |
| コード長 | 1,440 bytes |
| コンパイル時間 | 227 ms |
| コンパイル使用メモリ | 7,680 KB |
| 実行使用メモリ | 28,032 KB |
| 最終ジャッジ日時 | 2024-06-23 22:17:40 |
| 合計ジャッジ時間 | 32,012 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 20 |
コンパイルメッセージ
Syntax OK
ソースコード
n = gets.to_i
n0 = 11
n1 = 2 ** n0
own_list = gets.split.map(&:to_i)
exp_list = gets.split.map{|s|s.to_i / 2}
org_mon_list = [0]
own_list.each do |level|
point = level << n0
i = org_mon_list.size
org_mon_list << point
while i > 1
j = i / 2
parent = org_mon_list[j]
if point < parent
org_mon_list[i] = parent
org_mon_list[j] = point
i = j
else
break
end
end
end
org_mon_list << ((10001 + 5000 * n) << n0)
low_count = 1500
n.times do |i|
mon_list = org_mon_list.clone
max_count = 0
n.times do |j|
exp = exp_list[(i + j) % n]
target = mon_list[1] + (exp << n0) + 1
count = target % n1
max_count = count if count > max_count
k = 1
mon_list[1] = target
while (k0 = 2 * k) <= n
k1 = k0 + 1
k0_mon = mon_list[k0]
k1_mon = mon_list[k1]
if k0_mon < target
if k1_mon < target
if k0_mon < k1_mon
mon_list[k] = k0_mon
mon_list[k0] = target
k = k0
else
mon_list[k] = k1_mon
mon_list[k1] = target
k = k1
end
else
mon_list[k] = k0_mon
mon_list[k0] = target
k = k0
end
elsif k1_mon < target
mon_list[k] = k1_mon
mon_list[k1] = target
k = k1
else
break
end
end
end
low_count = max_count if max_count < low_count
end
puts low_count