結果
問題 | No.323 yuki国 |
ユーザー |
![]() |
提出日時 | 2015-12-16 23:28:48 |
言語 | Ruby (3.4.1) |
結果 |
WA
(最新)
AC
(最初)
|
実行時間 | - |
コード長 | 1,656 bytes |
コンパイル時間 | 115 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 13,312 KB |
最終ジャッジ日時 | 2024-06-28 12:24:23 |
合計ジャッジ時間 | 11,463 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 31 WA * 1 |
コンパイルメッセージ
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 + @yukiif new_last < 1new_first = new_last = 0elsif new_first < 1new_first = other.range.first.even? ? 1 : 2end@range = new_first..new_lastelsenew_first = [@range.first, other.range.first + @yuki].minnew_last = [@range.last, other.range.last + @yuki].maxif new_last < 1new_first = new_last = 0elsif new_first < 1new_first = other.range.first.even? ? 1 : 2endnew_last = Float::INFINITY if @range.last < new_last@range = new_first..new_lastendreturn (original_range && original_range != @range) ||(original_range.nil? && @range != (0..0))enddef to_s@range.nil? ?"___" :"#{@range.first}-#{@range.last==Float::INFINITY ? ?X : @range.last}"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]]cnt = 0while stack.size > 0cnt+=1i, 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 map.map{|a| a*?, }puts 'Yes'exitendendputs 'No'