結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
horiesiniti
|
| 提出日時 | 2018-03-31 07:08:59 |
| 言語 | Ruby (3.4.1) |
| 結果 |
AC
|
| 実行時間 | 2,287 ms / 3,000 ms |
| コード長 | 727 bytes |
| コンパイル時間 | 260 ms |
| コンパイル使用メモリ | 7,552 KB |
| 実行使用メモリ | 20,096 KB |
| 最終ジャッジ日時 | 2024-07-23 14:48:28 |
| 合計ジャッジ時間 | 28,670 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
コンパイルメッセージ
Syntax OK
ソースコード
def f(ar,dx,dy,h,w,c)
arr= Marshal.load(Marshal.dump(ar))
return false if c==0
h.times{|y|
w.times{|x|
y1=y+dy
x1=x+dx
if arr[y][x]==1
return false if x1<0 || x1>=w || y1<0 || y1>=h
arr[y1][x1]-=1
c-=2
end
next if x1<0 || x1>=w || y1<0 || y1>=h
return false if arr[y1][x1]<0
}
}
return c==0
end
h,w=gets.split.map{|e| e.to_i}
m=[]
h.times{
m<<gets.chomp
}
arr=Array.new(h).map{Array.new(w,0)}
c=0
i=0
m.each{|e|
j=0
e.chars{|e2|
if e2=="#"
arr[i][j]=1
c+=1
else
arr[i][j]=0
end
j+=1
}
i+=1
}
ok=false
h.times{|dy|
w.times{|dx|
if dy+dx!=0
ok=ok||f(arr,dx,dy,h,w,c)
ok=ok||f(arr,-dx,dy,h,w,c)
end
}
}
if ok==true
puts "YES"
else
puts "NO"
end
horiesiniti