結果
問題 | No.323 yuki国 |
ユーザー |
![]() |
提出日時 | 2015-12-27 10:29:32 |
言語 | Ruby (3.4.1) |
結果 |
TLE
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,383 bytes |
コンパイル時間 | 91 ms |
コンパイル使用メモリ | 7,168 KB |
実行使用メモリ | 18,432 KB |
最終ジャッジ日時 | 2024-06-28 12:29:41 |
合計ジャッジ時間 | 12,023 ms |
ジャッジサーバーID (参考情報) |
judge5 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 10 TLE * 1 -- * 21 |
コンパイルメッセージ
Syntax OK
ソースコード
class Yukidamaattr_accessor :rangeattr_reader :yukidef initialize(range, yuki)@range = range@yuki = yukienddef merge!(other)original_range = @rangeif @range.nil?new_first = other.range.first + @yukinew_last = other.range.last + @yukielsenew_first = [@range.first, other.range.first + @yuki].minnew_last = [@range.last, other.range.last + @yuki].maxendif new_last < 1new_first = new_last = 0elsif new_first < 1 || [other.yuki,@yuki] == [-1,-1]new_first = other.range.first.even? ? 1 : 2elsif [other.yuki,@yuki] == [1,1]new_last = Float::INFINITYend@range = new_first..new_lastreturn (original_range && original_range != @range) ||(original_range.nil? && @range != (0..0))endendh, w = gets.split.map(&:to_i)a, si, sj = gets.split.map(&:to_i)b, gi, gj = gets.split.map(&:to_i)if (a+si+sj+b+gi+gj).odd?puts 'No'exitendyuki = h.times.map{ gets.chars.map{|c| c==?*?1:-1 } }map = Array.new(h){|i| Array.new(w){|j| Yukidama.new(nil, yuki[i][j]) } }map[si][sj].range = a..astack = [[si, sj]]while stack.size > 0i, j = stack.popd = map[i][j][[i-1,j],[i+1,j],[i,j-1],[i,j+1]].each{|i,j|next unless 0 <= i && i < h && 0 <= j && j < wif map[i][j].merge!(d)stack.push [i,j]end}if map[gi][gj].range && map[gi][gj].range.include?(b)puts 'Yes'exitendendputs 'No'