結果
問題 | 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") }