For problem statement at 0-999/0-99/50-59/58/problemD.txt this is a correct solution, but verifier at 0-999/0-99/50-59/58/verifierD.go ends with case 2 failed: runtime error: exit status 2
panic: runtime error: index out of range [1] with length 1
goroutine 1 [running]:
main.main()
/tmp/build-2600156469/solution.go:50 +0x708
input: [jfs ipt t qwbj gphif l] sep:z
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"os"
"sort"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
cities := make([]string, n)
sumLen := 0
for i := 0; i < n; i++ {
scanner.Scan()
cities[i] = scanner.Text()
sumLen += len(cities[i])
}
scanner.Scan()
dStr := scanner.Text()
K := (2 * sumLen) / n
groups := make(map[int][]string)
for _, city := range cities {
l := len(city)
groups[l] = append(groups[l], city)
}
for _, g := range groups {
sort.Strings(g)
}
var lines []string
for x := 1; x <= K/2; x++ {
y := K - x
if x < y {
U := groups[x]
V := groups[y]
for i := 0; i < len(U); i++ {
s1 := U[i] + dStr + V[i]
s2 := V[i] + dStr + U[i]
if s1 < s2 {
lines = append(lines, s1)
} else {
lines = append(lines, s2)
}
}
} else if x == y {
U := groups[x]
for i := 0; i < len(U)/2; i++ {
s1 := U[2*i] + dStr + U[2*i+1]
s2 := U[2*i+1] + dStr + U[2*i]
if s1 < s2 {
lines = append(lines, s1)
} else {
lines = append(lines, s2)
}
}
}
}
sort.Strings(lines)
writer := bufio.NewWriter(os.Stdout)
for _, line := range lines {
writer.WriteString(line + "\n")
}
writer.Flush()
}
```