For problem statement at 0-999/0-99/30-39/37/problemC.txt this is a correct solution, but verifier at 0-999/0-99/30-39/37/verifierC.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Item struct {
id int
l int
code []byte
}
func main() {
in := bufio.NewReader(os.Stdin)
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
items := make([]Item, n)
for i := 0; i < n; i++ {
items[i].id = i
fmt.Fscan(in, &items[i].l)
}
sort.Slice(items, func(i, j int) bool {
return items[i].l < items[j].l
})
for i := 0; i < n; i++ {
if i == 0 {
items[i].code = make([]byte, items[i].l)
for j := 0; j < items[i].l; j++ {
items[i].code[j] = '0'
}
} else {
prev := items[i-1].code
pos := -1
for j := len(prev) - 1; j >= 0; j-- {
if prev[j] == '0' {
pos = j
break
}
}
if pos == -1 {
fmt.Println("NO")
return
}
curr := make([]byte, items[i].l)
for j := 0; j < pos; j++ {
curr[j] = prev[j]
}
curr[pos] = '1'
for j := pos + 1; j < items[i].l; j++ {
curr[j] = '0'
}
items[i].code = curr
}
}
fmt.Println("YES")
sort.Slice(items, func(i, j int) bool {
return items[i].id < items[j].id
})
out := bufio.NewWriter(os.Stdout)
for i := 0; i < n; i++ {
out.WriteString(string(items[i].code) + "\n")
}
out.Flush()
}