結果
問題 | No.179 塗り分け |
ユーザー |
![]() |
提出日時 | 2015-04-07 20:16:44 |
言語 | Go1.4 (1.4.2) |
結果 |
AC
|
実行時間 | 26 ms / 3,000 ms |
コード長 | 1,149 bytes |
コンパイル時間 | 283 ms |
コンパイル使用メモリ | 32,908 KB |
実行使用メモリ | 6,948 KB |
最終ジャッジ日時 | 2024-07-23 14:28:20 |
合計ジャッジ時間 | 1,508 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 6 |
other | AC * 40 |
ソースコード
package main import ( "bufio" "fmt" "os" "strconv" ) var sc = bufio.NewScanner(os.Stdin) func next() string { sc.Split(bufio.ScanWords) if !sc.Scan() { panic("could not scan a word from the reader") } return sc.Text() } func nextInt() int { i, e := strconv.Atoi(next()) if e != nil { panic(e) } return i } func main() { H, W := nextInt(), nextInt() var board [110][110]bool var count int for i := 0; i < H; i++ { row := next() for j, r := range row { if r == '#' { board[i][j] = true count++ } } } if count == 0 || count%2 > 0 { fmt.Println("NO") return } check := func(dh, dw int) bool { var checked [110][110]bool for h := 0; h < H; h++ { for w := 0; w < W; w++ { if !board[h][w] || checked[h][w] { continue } if h+dh < 0 || H <= h+dh || w+dw < 0 || W <= w+dw || !board[h+dh][w+dw] { return false } checked[h+dh][w+dw] = true } } return true } for dh := -H + 1; dh < H; dh++ { for dw := -W + 1; dw < W; dw++ { if dh == 0 && dw == 0 { continue } if check(dh, dw) { fmt.Println("YES") return } } } fmt.Println("NO") }