結果
| 問題 |
No.179 塗り分け
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2022-03-07 17:08:48 |
| 言語 | Go (1.23.4) |
| 結果 |
AC
|
| 実行時間 | 37 ms / 3,000 ms |
| コード長 | 1,620 bytes |
| コンパイル時間 | 14,678 ms |
| コンパイル使用メモリ | 243,972 KB |
| 実行使用メモリ | 6,272 KB |
| 最終ジャッジ日時 | 2024-07-22 12:15:03 |
| 合計ジャッジ時間 | 14,422 ms |
|
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 6 |
| other | AC * 40 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
var sc = bufio.NewScanner(os.Stdin)
var wr = bufio.NewWriter(os.Stdout)
func print(x ...interface{}) {
fmt.Fprintln(wr, x...)
}
func nextString() string {
sc.Scan()
return sc.Text()
}
func nextInt() int {
sc.Scan()
i, err := strconv.Atoi(sc.Text())
if err != nil {
panic(err)
}
return i
}
func nextFloat() float64 {
sc.Scan()
i, err := strconv.ParseFloat(sc.Text(), 64)
if err != nil {
panic(err)
}
return i
}
func chmax(a *int, b int) {
if *a < b {
*a = b
}
}
func chmin(a *int, b int) {
if *a > b {
*a = b
}
}
func reverse(s string) string {
rs := []rune(s)
for i, j := 0, len(s)-1; i < j; i, j = i+1, j-1 {
rs[i], rs[j] = rs[j], rs[i]
}
return string(rs)
}
var (
H, W int
S []string
)
func solve(dy, dx int) bool {
used := make([][]bool, H)
for i := range used {
used[i] = make([]bool, W)
}
ok := false
for i := range S {
for j := range S[i] {
if S[i][j] == '#' && !used[i][j] {
if i+dy >= H || j+dx >= W {
return false
}
if S[i+dy][j+dx] == '#' && !used[i+dy][j+dx] {
used[i+dy][j+dx] = true
} else {
return false
}
ok = true
}
}
}
return ok
}
func main() {
defer wr.Flush()
sc.Split(bufio.ScanWords)
H, W = nextInt(), nextInt()
S = make([]string, H)
for i := range S {
S[i] = nextString()
}
for i := 0; i < 2; i++ {
for i := range S {
for j := range S[i] {
if i == 0 && j == 0 {
continue
}
if solve(i, j) {
print("YES")
return
}
}
}
for i := range S {
S[i] = reverse(S[i])
}
}
print("NO")
}