結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2015-04-06 02:47:59 |
| 言語 | Go1.4 (1.4.2) |
| 結果 |
AC
|
| 実行時間 | 114 ms / 3,000 ms |
| コード長 | 1,398 bytes |
| コンパイル時間 | 2,867 ms |
| コンパイル使用メモリ | 32,648 KB |
| 実行使用メモリ | 6,944 KB |
| 最終ジャッジ日時 | 2024-07-23 14:27:43 |
| 合計ジャッジ時間 | 5,242 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
package main
import (
"bufio"
"os"
"strconv"
"fmt"
)
var s = bufio.NewScanner(os.Stdin)
func next() string {
s.Split(bufio.ScanWords)
s.Scan()
return s.Text()
}
func nextLine() string {
s.Split(bufio.ScanLines)
s.Scan()
if nil != s.Err() {
panic(s.Err())
}
return s.Text()
}
func nextInt() int {
i, e := strconv.Atoi(next())
if e != nil {
panic(e)
}
return i
}
func max(a int, b int) int {
if a < b {
return b
}
return a
}
func solve(S []string, x int, y int) bool {
if y == 0 && x <= 0 {
return false
}
checked := make([][]bool, H)
for i := 0; i < len(S); i++ {
checked[i] = make([]bool, W)
}
count := 0
for j := 0; j < H; j++ {
for i := 0; i < W; i++ {
if checked[j][i] || S[j][i] == '.' {
continue
}
if 0 <= i+x && i+x < W && 0 <= j+y && j+y < H {
if checked[j + y][i + x] {
return false
}
if S[j+y][i+x] == '.' {
return false
}
checked[j][i] = true
checked[j+y][i+x] = true
count++
}else {
return false
}
}
}
if count > 0 {
println(count, x, y)
return true
}
return false
}
var H int
var W int
func main() {
H = nextInt()
W = nextInt()
S := make([]string, H)
for i := 0; i < H; i++ {
S[i] = nextLine()
}
for i := -W + 1; i < W; i++ {
for j := 0; j < H; j++ {
if solve(S, i, j) {
fmt.Println("YES")
return
}
}
}
fmt.Println("NO")
}