For problem statement at 1000-1999/1400-1499/1490-1499/1495/problemC.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1490-1499/1495/verifierC.go ends with case 2 failed:
input:
1
3 1
.
X
.
expected:
X
X
X
got:
.
X
.
exit status 1 can you fix the verifier? package main
import (
"bufio"
"io"
"os"
)
type FastScanner struct {
data []byte
idx int
}
func NewFastScanner() *FastScanner {
b, _ := io.ReadAll(os.Stdin)
return &FastScanner{data: b}
}
func (fs *FastScanner) skip() {
for fs.idx < len(fs.data) && fs.data[fs.idx] <= ' ' {
fs.idx++
}
}
func (fs *FastScanner) nextInt() int {
fs.skip()
x := 0
for fs.idx < len(fs.data) && fs.data[fs.idx] > ' ' {
x = x*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return x
}
func (fs *FastScanner) nextBytes() []byte {
fs.skip()
start := fs.idx
for fs.idx < len(fs.data) && fs.data[fs.idx] > ' ' {
fs.idx++
}
return fs.data[start:fs.idx]
}
func main() {
fs := NewFastScanner()
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
t := fs.nextInt()
for ; t > 0; t-- {
n := fs.nextInt()
m := fs.nextInt()
g := make([][]byte, n)
for i := 0; i < n; i++ {
g[i] = fs.nextBytes()
}
ans := make([][]byte, n)
for i := 0; i < n; i++ {
ans[i] = make([]byte, m)
for j := 0; j < m; j++ {
ans[i][j] = '.'
}
}
start := 0
if n%3 == 0 {
start = 1
}
full := make([]bool, n)
for r := start; r < n; r += 3 {
full[r] = true
for j := 0; j < m; j++ {
ans[r][j] = 'X'
}
}
for i := 0; i < n; i++ {
if full[i] {
continue
}
for j := 0; j < m; j++ {
if g[i][j] == 'X' {
ans[i][j] = 'X'
}
}
}
for r := start; r+3 < n; r += 3 {
c := -1
for j := 0; j < m; j++ {
if g[r+1][j] == 'X' || g[r+2][j] == 'X' {
c = j
break
}
}
if c == -1 {
c = 0
}
ans[r+1][c] = 'X'
ans[r+2][c] = 'X'
}
for i := 0; i < n; i++ {
out.Write(ans[i])
out.WriteByte('\n')
}
}
}