For problem statement at 1000-1999/1100-1199/1190-1199/1198/problemD.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1190-1199/1198/verifierD.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
var n int
var pref [51][51]int
var dp [50][50][50][50]uint16
func count(x1, x2, y1, y2 int) int {
return pref[x2+1][y2+1] - pref[x1][y2+1] - pref[x2+1][y1] + pref[x1][y1]
}
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
fmt.Fscan(in, &n)
grid := make([]string, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &grid[i])
}
for i := 0; i < n; i++ {
for j := 0; j < n; j++ {
pref[i+1][j+1] = pref[i][j+1] + pref[i+1][j] - pref[i][j]
if grid[i][j] == '#' {
pref[i+1][j+1]++
}
}
}
for h := 1; h <= n; h++ {
for w := 1; w <= n; w++ {
base := h
if w > base {
base = w
}
for x1 := 0; x1+h <= n; x1++ {
x2 := x1 + h - 1
for y1 := 0; y1+w <= n; y1++ {
y2 := y1 + w - 1
if count(x1, x2, y1, y2) == 0 {
dp[x1][x2][y1][y2] = 0
continue
}
res := base
for k := x1; k < x2; k++ {
v := int(dp[x1][k][y1][y2]) + int(dp[k+1][x2][y1][y2])
if v < res {
res = v
}
}
for k := y1; k < y2; k++ {
v := int(dp[x1][x2][y1][k]) + int(dp[x1][x2][k+1][y2])
if v < res {
res = v
}
}
dp[x1][x2][y1][y2] = uint16(res)
}
}
}
}
fmt.Fprintln(out, dp[0][n-1][0][n-1])
}