結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
tnoda_
|
| 提出日時 | 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")
}
tnoda_