結果
問題 | No.179 塗り分け |
ユーザー | shi-mo |
提出日時 | 2016-03-31 00:35:11 |
言語 | Ruby (3.3.0) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,615 bytes |
コンパイル時間 | 84 ms |
コンパイル使用メモリ | 7,424 KB |
実行使用メモリ | 21,024 KB |
最終ジャッジ日時 | 2024-10-03 03:18:32 |
合計ジャッジ時間 | 7,577 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
テストケース
テストケース表示入力 | 結果 | 実行時間 実行使用メモリ |
---|---|---|
testcase_00 | AC | 88 ms
17,280 KB |
testcase_01 | AC | 94 ms
12,032 KB |
testcase_02 | AC | 90 ms
12,032 KB |
testcase_03 | AC | 86 ms
12,288 KB |
testcase_04 | AC | 88 ms
12,032 KB |
testcase_05 | AC | 1,588 ms
12,928 KB |
testcase_06 | WA | - |
testcase_07 | WA | - |
testcase_08 | TLE | - |
testcase_09 | -- | - |
testcase_10 | -- | - |
testcase_11 | -- | - |
testcase_12 | -- | - |
testcase_13 | -- | - |
testcase_14 | -- | - |
testcase_15 | -- | - |
testcase_16 | -- | - |
testcase_17 | -- | - |
testcase_18 | -- | - |
testcase_19 | -- | - |
testcase_20 | -- | - |
testcase_21 | -- | - |
testcase_22 | -- | - |
testcase_23 | -- | - |
testcase_24 | -- | - |
testcase_25 | -- | - |
testcase_26 | -- | - |
testcase_27 | -- | - |
testcase_28 | -- | - |
testcase_29 | -- | - |
testcase_30 | -- | - |
testcase_31 | -- | - |
testcase_32 | -- | - |
testcase_33 | -- | - |
testcase_34 | -- | - |
testcase_35 | -- | - |
testcase_36 | -- | - |
testcase_37 | -- | - |
testcase_38 | -- | - |
testcase_39 | -- | - |
testcase_40 | -- | - |
testcase_41 | -- | - |
testcase_42 | -- | - |
testcase_43 | -- | - |
testcase_44 | -- | - |
testcase_45 | -- | - |
コンパイルメッセージ
Syntax OK
ソースコード
h, w = gets.split.map(&:to_i) s = h.times.map{ gets.chomp!.split(//).map{|c| '#' == c } } class Image def initialize(a) @a = a.map{|row| row.clone } @row_size = @a.length @column_size = @a[0].length end attr_reader :row_size, :column_size def [](x, y) @a[x][y] end def []=(x, y, val) @a[x][y] = val end def clone self.class.new(@a.map{|row| row.clone }) end def shift(dx, dy) row_ids = (0...row_size).to_a row_ids.reverse! if 0 <= dx col_ids = (0...column_size).to_a col_ids.reverse! if 0 <= dy row_ids.each do |i| col_ids.each do |j| self[i, j] = include_index?(i-dx, j-dy) ? self[i-dx, j-dy] : false end end self end def include_index?(i, j) 0 <= i && i < row_size && 0 <= j && j < column_size end def &(other) result = self.clone each_index do |i, j| result[i, j] &= other[i, j] end result end def ^(other) result = self.clone each_index do |i, j| result[i, j] ^= other[i, j] end result end def ==(other) each_index do |i, j| return false if self[i, j] != other[i, j] end true end def each_index row_size.times do |i| column_size.times do |j| yield(i, j) end end end end image = Image.new(s) ok = false h.times do |dx| break if ok ((1-w)...w).each do |dy| break if ok next if 0 == dx && 0 == dy mask = image.clone.shift(dx, dy) half_image = (image & mask).shift(-dx, -dy) ok |= image == (half_image ^ half_image.clone.shift(dx, dy)) end end puts ok ? 'YES' : 'NO'