表題の通り問題を解いたんだけど,別解らしい. たしかに実行時間を見るとだいたい1000ms前後なので,間に合ってはいるけど想定解よりはかなり遅い. 想定解だと300msくらいだった.
愚直にすべての座標を試すのが簡単そうだけど,それだと O(HW(H + W))かかって間に合わない. しかし,座標が決まっているとき,照らされるマスの範囲を数える処理を高速化することはできそう.
具体的には,行,列ごとに,障害物の座標をソートして持っておく.
例えば, v_positions[i]
に i
列目の障害物の座標を持っておくような感じ.
「ソートして」というところがミソで,こうすると照らされるマスの範囲を数える処理が対数時間でできる.