← Home
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)
}