For problem statement at 1000-1999/1300-1399/1360-1369/1367/problemD.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1360-1369/1367/verifierD.go ends with can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func abs(x int) int {
if x < 0 {
return -x
}
return x
}
func main() {
reader := bufio.NewReader(os.Stdin)
writer := bufio.NewWriter(os.Stdout)
defer writer.Flush()
var q int
if _, err := fmt.Fscan(reader, &q); err != nil {
return
}
for tc := 0; tc < q; tc++ {
var s string
fmt.Fscan(reader, &s)
var m int
fmt.Fscan(reader, &m)
b := make([]int, m)
for i := 0; i < m; i++ {
fmt.Fscan(reader, &b[i])
}
freq := make([]int, 26)
for i := 0; i < len(s); i++ {
freq[s[i]-'a']++
}
ans := make([]byte, m)
assigned := make([]bool, m)
assignedCount := 0
currentChar := 25
for assignedCount < m {
var Z []int
for i := 0; i < m; i++ {
if !assigned[i] && b[i] == 0 {
Z = append(Z, i)
}
}
for currentChar >= 0 && freq[currentChar] < len(Z) {
currentChar--
}
for _, idx := range Z {
ans[idx] = byte(currentChar + 'a')
assigned[idx] = true
assignedCount++
}
currentChar--
for i := 0; i < m; i++ {
if !assigned[i] {
for _, idx := range Z {
b[i] -= abs(i - idx)
}
}
}
}
fmt.Fprintln(writer, string(ans))
}
}