For problem statement at 0-999/0-99/40-49/45/problemE.txt this is a correct solution, but verifier at 0-999/0-99/40-49/45/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
func feasible(a, b int, cntN, cntS []int) bool {
return a == b || (cntN[a] > cntS[a] && cntS[b] > cntN[b])
}
func main() {
in := bufio.NewReader(os.Stdin)
var n int
fmt.Fscan(in, &n)
names := make([]string, n)
surnames := make([]string, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &names[i])
}
for i := 0; i < n; i++ {
fmt.Fscan(in, &surnames[i])
}
sort.Strings(names)
sort.Strings(surnames)
cntN := make([]int, 26)
cntS := make([]int, 26)
nameInit := make([]int, n)
surInit := make([]int, n)
for i, s := range names {
nameInit[i] = int(s[0] - 'A')
cntN[nameInit[i]]++
}
for i, s := range surnames {
surInit[i] = int(s[0] - 'A')
cntS[surInit[i]]++
}
used := make([]bool, n)
ans := make([]string, n)
for i := 0; i < n; i++ {
a := nameInit[i]
pick := -1
for j := 0; j < n; j++ {
if !used[j] && feasible(a, surInit[j], cntN, cntS) {
pick = j
break
}
}
ans[i] = surnames[pick]
used[pick] = true
cntN[a]--
cntS[surInit[pick]]--
}
out := bufio.NewWriter(os.Stdout)
for i := 0; i < n; i++ {
if i > 0 {
fmt.Fprint(out, ", ")
}
fmt.Fprint(out, names[i], " ", ans[i])
}
out.Flush()
}