For problem statement at 0-999/900-999/920-929/929/problemB.txt this is a correct solution, but verifier at 0-999/900-999/920-929/929/verifierB.go ends with case 1 failed: runtime error: exit status 2
panic: runtime error: index out of range [23] with length 23
goroutine 1 [running]:
main.main()
/tmp/build-6730025/solution.go:48 +0x574
input:
3 26
...-.SS.-...
...-...S-S.S
..S-....-..S
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Seat struct {
r, c, cost int
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var n, k int
fmt.Fscan(reader, &n, &k)
grid := make([][]byte, n)
var candidates []Seat
for i := 0; i < n; i++ {
var s string
fmt.Fscan(reader, &s)
grid[i] = []byte(s)
for j, char := range grid[i] {
if char == '.' {
cost := 0
if j > 0 && grid[i][j-1] == 'S' {
cost++
}
if j < len(grid[i])-1 && grid[i][j+1] == 'S' {
cost++
}
candidates = append(candidates, Seat{i, j, cost})
}
}
}
sort.Slice(candidates, func(i, j int) bool {
return candidates[i].cost < candidates[j].cost
})
for i := 0; i < k; i++ {
seat := candidates[i]
grid[seat.r][seat.c] = 'x'
}
totalNeighbors := 0
for i := 0; i < n; i++ {
for j, char := range grid[i] {
if char == 'S' {
if j > 0 {
left := grid[i][j-1]
if left == 'S' || left == 'P' || left == 'x' {
totalNeighbors++
}
}
if j < len(grid[i])-1 {
right := grid[i][j+1]
if right == 'S' || right == 'P' || right == 'x' {
totalNeighbors++
}
}
}
}
}
fmt.Fprintln(writer, totalNeighbors)
for i := 0; i < n; i++ {
fmt.Fprintln(writer, string(grid[i]))
}
}
```