結果
| 問題 | No.3459 Defeat Slimes |
| コンテスト | |
| ユーザー |
tomerun
|
| 提出日時 | 2026-02-28 14:23:23 |
| 言語 | Crystal (1.19.1) |
| 結果 |
RE
|
| 実行時間 | - |
| コード長 | 1,960 bytes |
| 記録 | |
| コンパイル時間 | 18,565 ms |
| コンパイル使用メモリ | 344,792 KB |
| 実行使用メモリ | 44,020 KB |
| 最終ジャッジ日時 | 2026-02-28 14:24:09 |
| 合計ジャッジ時間 | 27,873 ms |
|
ジャッジサーバーID (参考情報) |
judge1 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 20 RE * 10 |
ソースコード
n, y, z = read_line.split.map(&.to_i128)
ss = Array.new(n) do
c, l, x = read_line.split.map(&.to_i128)
[l, x, c]
end.sort
q = PriorityQueue(Array(Int128)).new(n.to_i)
si = 0
while si < n && ss[si][0] <= y
q.add([ss[si][1], ss[si][2]])
si += 1
end
ans = 0
while q.size > 0
x, c = q.top
need = (z - y + x - 1) // x
if si < n && ((ss[si][0] - y + x - 1) // x < need)
use = {(ss[si][0] - y + x - 1) // x, 0}.max
if use < c
ans += use
y += x * use
q.top[1] -= use
q.add([ss[si][1], ss[si][2]])
si += 1
else
ans += c
y += x * c
q.pop
end
next
end
if need <= c
puts ans + need
exit
else
ans += c
y += x * c
q.pop
end
end
puts -1
class PriorityQueue(T)
def initialize(capacity : Int32)
@elem = Array(T).new(capacity)
end
def initialize(list : Enumerable(T))
@elem = list.to_a
1.upto(size - 1) { |i| fixup(i) }
end
def size
@elem.size
end
def add(v)
@elem << v
fixup(size - 1)
end
def top
@elem[0]
end
def pop
ret = @elem[0]
last = @elem.pop
if size > 0
@elem[0] = last
fixdown(0)
end
ret
end
def clear
@elem.clear
end
def decrease_top(new_value : T)
@elem[0] = new_value
fixdown(0)
end
def to_s(io : IO)
io << @elem
end
private def fixup(index : Int32)
while index > 0
parent = (index - 1) // 2
break if @elem[parent] >= @elem[index]
@elem[parent], @elem[index] = @elem[index], @elem[parent]
index = parent
end
end
private def fixdown(index : Int32)
while true
left = index * 2 + 1
break if left >= size
right = index * 2 + 2
child = right >= size || @elem[left] > @elem[right] ? left : right
if @elem[child] > @elem[index]
@elem[child], @elem[index] = @elem[index], @elem[child]
index = child
else
break
end
end
end
end
tomerun