For problem statement at 0-999/900-999/930-939/932/problemD.txt this is a correct solution, but verifier at 0-999/900-999/930-939/932/verifierD.go ends with test 1 failed: runtime error: exit status 2
panic: runtime error: index out of range [10] with length 7
goroutine 1 [running]:
main.main()
/tmp/build-1127915950/solution.go:114 +0x430
exit status 1 can you fix the verifier? package main
import (
"bufio"
"io"
"os"
"strconv"
)
type Reader struct {
buf []byte
pos int
}
func NewReader() *Reader {
b, _ := io.ReadAll(os.Stdin)
return &Reader{buf: b, pos: 0}
}
func (r *Reader) NextInt() int {
for r.pos < len(r.buf) && r.buf[r.pos] <= ' ' {
r.pos++
}
if r.pos >= len(r.buf) {
return 0
}
res := 0
for r.pos < len(r.buf) && r.buf[r.pos] > ' ' {
res = res*10 + int(r.buf[r.pos]-'0')
r.pos++
}
return res
}
func (r *Reader) NextInt64() int64 {
for r.pos < len(r.buf) && r.buf[r.pos] <= ' ' {
r.pos++
}
if r.pos >= len(r.buf) {
return 0
}
var res int64 = 0
for r.pos < len(r.buf) && r.buf[r.pos] > ' ' {
res = res*10 + int64(r.buf[r.pos]-'0')
r.pos++
}
return res
}
func main() {
reader := NewReader()
if reader.pos >= len(reader.buf) {
return
}
q := reader.NextInt()
if q == 0 {
return
}
jump := make([][20]int, q+5)
sum := make([][20]int64, q+5)
w := make([]int64, q+5)
depth := make([]int, q+5)
cnt := 1
w[1] = 0
depth[1] = 1
var last int64 = 0
writer := bufio.NewWriterSize(os.Stdout, 1024*1024)
defer writer.Flush()
for k := 0; k < q; k++ {
type_ := reader.NextInt()
p := reader.NextInt64()
q_val := reader.NextInt64()
if type_ == 1 {
R := int(p ^ last)
W := q_val ^ last
cnt++
w[cnt] = W
x := R
if w[x] >= W {
jump[cnt][0] = x
} else {
for i := 19; i >= 0; i-- {
if depth[x] > (1<<i) && w[jump[x][i]] < W {
x = jump[x][i]
}
}
jump[cnt][0] = jump[x][0]
}
depth[cnt] = depth[jump[cnt][0]] + 1
sum[cnt][0] = W
for i := 1; i <= 19; i++ {
jump[cnt][i] = jump[jump[cnt][i-1]][i-1]
sum[cnt][i] = sum[cnt][i-1] + sum[jump[cnt][i-1]][i-1]
}
} else {
R := int(p ^ last)
X := q_val ^ last
ans := 0
curr := R
for i := 19; i >= 0; i-- {
if depth[curr] >= (1<<i) && sum[curr][i] <= X {
X -= sum[curr][i]
ans += 1 << i
curr = jump[curr][i]
}
}
last = int64(ans)
writer.WriteString(strconv.Itoa(ans))
writer.WriteByte('\n')
}
}
}