For problem statement at 0-999/200-299/290-299/292/problemE.txt this is a correct solution, but verifier at 0-999/200-299/290-299/292/verifierE.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
type Query struct {
x, y int
}
var (
tree []int
a []int
b []int
)
func update(node, l, r, ql, qr, val int) {
if ql <= l && r <= qr {
tree[node] = val
return
}
mid := (l + r) / 2
if ql <= mid {
update(node*2, l, mid, ql, qr, val)
}
if qr > mid {
update(node*2+1, mid+1, r, ql, qr, val)
}
}
func query(node, l, r, pos int) int {
res := tree[node]
if l == r {
return res
}
mid := (l + r) / 2
if pos <= mid {
childRes := query(node*2, l, mid, pos)
if childRes > res {
res = childRes
}
} else {
childRes := query(node*2+1, mid+1, r, pos)
if childRes > res {
res = childRes
}
}
return res
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
scanner.Buffer(make([]byte, 1024*1024), 10*1024*1024)
nextInt := func() int {
scanner.Scan()
res, _ := strconv.Atoi(scanner.Text())
return res
}
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
m := nextInt()
a = make([]int, n+1)
for i := 1; i <= n; i++ {
a[i] = nextInt()
}
b = make([]int, n+1)
for i := 1; i <= n; i++ {
b[i] = nextInt()
}
tree = make([]int, 4*n+1)
queries := make([]Query, m+1)
timer := 0
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
for i := 0; i < m; i++ {
t := nextInt()
if t == 1 {
x := nextInt()
y := nextInt()
k := nextInt()
timer++
queries[timer] = Query{x, y}
update(1, 1, n, y, y+k-1, timer)
} else {
pos := nextInt()
id := query(1, 1, n, pos)
if id == 0 {
fmt.Fprintln(out, b[pos])
} else {
val := a[queries[id].x+pos-queries[id].y]
fmt.Fprintln(out, val)
}
}
}
}