← Home
For problem statement at 0-999/700-799/740-749/745/problemB.txt this is a correct solution, but verifier at 0-999/700-799/740-749/745/verifierB.go ends with All tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
)

type Point struct {
	r, c int
}

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n, m int
	if _, err := fmt.Fscan(reader, &n, &m); err != nil {
		return
	}

	pts := []Point{}
	minR, maxR := n, -1
	minC, maxC := m, -1

	for i := 0; i < n; i++ {
		var s string
		fmt.Fscan(reader, &s)
		for j := 0; j < m; j++ {
			if s[j] == 'X' {
				pts = append(pts, Point{i, j})
				if i < minR {
					minR = i
				}
				if i > maxR {
					maxR = i
				}
				if j < minC {
					minC = j
				}
				if j > maxC {
					maxC = j
				}
			}
		}
	}

	C := len(pts)
	if C == 0 {
		fmt.Println("NO")
		return
	}

	for i := range pts {
		pts[i].r -= minR
		pts[i].c -= minC
	}

	h := maxR - minR + 1
	w := maxC - minC + 1

	inS := make([][]bool, h)
	for i := 0; i < h; i++ {
		inS[i] = make([]bool, w)
	}
	for _, p := range pts {
		inS[p.r][p.c] = true
	}

	twoC := 2 * C
	for R := h; R <= twoC; R++ {
		if twoC%R != 0 {
			continue
		}
		C_prime := twoC / R
		if C_prime < w {
			continue
		}

		abs_dr := R - h
		abs_dc := C_prime - w

		dr_cands := []int{abs_dr}
		if abs_dr != 0 {
			dr_cands = append(dr_cands, -abs_dr)
		}

		dc_cands := []int{abs_dc}
		if abs_dc != 0 {
			dc_cands = append(dc_cands, -abs_dc)
		}

		for _, dr := range dr_cands {
			for _, dc := range dc_cands {
				overlap := false
				for _, p := range pts {
					nr, nc := p.r+dr, p.c+dc
					if nr >= 0 && nr < h && nc >= 0 && nc < w {
						if inS[nr][nc] {
							overlap = true
							break
						}
					}
				}
				if !overlap {
					fmt.Println("YES")
					return
				}
			}
		}
	}

	fmt.Println("NO")
}
```