For problem statement at 2000-2999/2100-2199/2140-2149/2146/problemD2.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2140-2149/2146/verifierD2.go ends with All 42 tests passed. can you fix the verifier? package main
import (
"io"
"math/bits"
"os"
"strconv"
)
type FastScanner struct {
data []byte
idx int
}
func (fs *FastScanner) NextInt() int {
for fs.idx < len(fs.data) && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') {
fs.idx++
}
n := 0
for fs.idx < len(fs.data) && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
n = n*10 + int(fs.data[fs.idx]-'0')
fs.idx++
}
return n
}
func fill(l, r, off int, ans []int) {
if l == r {
ans[0] = off + l
return
}
x := l ^ r
k := bits.Len(uint(x)) - 1
base := (l >> (k + 1)) << (k + 1)
if base != 0 {
fill(l-base, r-base, off+base, ans)
return
}
mid := 1 << k
a := mid - l
b := r - mid + 1
if a <= b {
for x := l; x < mid; x++ {
y := mid + (mid - 1 - x)
ans[x-l] = off + y
ans[y-l] = off + x
}
if a < b {
start := mid + a - l
fill(a, b-1, off+mid, ans[start:])
}
} else {
subLen := mid - b - l
fill(l, mid-b-1, off, ans[:subLen])
for y := mid; y <= r; y++ {
x := 2*mid - 1 - y
ans[x-l] = off + y
ans[y-l] = off + x
}
}
}
func main() {
data, _ := io.ReadAll(os.Stdin)
fs := FastScanner{data: data}
t := fs.NextInt()
out := make([]byte, 0, 1<<20)
for ; t > 0; t-- {
l := fs.NextInt()
r := fs.NextInt()
n := r - l + 1
ans := make([]int, n)
fill(l, r, 0, ans)
var sum int64
for i, v := range ans {
sum += int64((l + i) | v)
}
out = strconv.AppendInt(out, sum, 10)
out = append(out, '\n')
for i, v := range ans {
if i > 0 {
out = append(out, ' ')
}
out = strconv.AppendInt(out, int64(v), 10)
}
out = append(out, '\n')
}
_, _ = os.Stdout.Write(out)
}