← Home
For problem statement at 1000-1999/1900-1999/1960-1969/1966/problemB.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1960-1969/1966/verifierB.go ends with All tests passed can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	scanner := bufio.NewScanner(os.Stdin)
	scanner.Split(bufio.ScanWords)
	
	const maxCapacity = 1024 * 1024
	buf := make([]byte, maxCapacity)
	scanner.Buffer(buf, maxCapacity)
	
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()
	
	if !scanner.Scan() {
		return
	}
	t := 0
	for _, b := range scanner.Bytes() {
		t = t*10 + int(b-'0')
	}
	
	for i := 0; i < t; i++ {
		scanner.Scan()
		n := 0
		for _, b := range scanner.Bytes() {
			n = n*10 + int(b-'0')
		}
		
		scanner.Scan()
		m := 0
		for _, b := range scanner.Bytes() {
			m = m*10 + int(b-'0')
		}
		
		hasWR1, hasWRn, hasWC1, hasWCm := false, false, false, false
		hasBR1, hasBRn, hasBC1, hasBCm := false, false, false, false
		
		for r := 0; r < n; r++ {
			scanner.Scan()
			row := scanner.Bytes()
			for c := 0; c < m && c < len(row); c++ {
				ch := row[c]
				if ch == 'W' {
					if r == 0 { hasWR1 = true }
					if r == n-1 { hasWRn = true }
					if c == 0 { hasWC1 = true }
					if c == m-1 { hasWCm = true }
				} else if ch == 'B' {
					if r == 0 { hasBR1 = true }
					if r == n-1 { hasBRn = true }
					if c == 0 { hasBC1 = true }
					if c == m-1 { hasBCm = true }
				}
			}
		}
		
		if (hasWR1 && hasWRn && hasWC1 && hasWCm) || (hasBR1 && hasBRn && hasBC1 && hasBCm) {
			writer.WriteString("YES\n")
		} else {
			writer.WriteString("NO\n")
		}
	}
}