← Home
For problem statement at 2000-2999/2000-2099/2050-2059/2052/problemJ.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2050-2059/2052/verifierJ.go ends with Accepted (402 tests). can you fix the verifier?  ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	r := bufio.NewReader(os.Stdin)
	w := bufio.NewWriter(os.Stdout)
	defer w.Flush()

	var T int
	fmt.Fscan(r, &T)

	for tc := 0; tc < T; tc++ {
		var n, m, q int
		fmt.Fscan(r, &n, &m, &q)

		a := make([]int64, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(r, &a[i])
		}

		d := make([]int64, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(r, &d[i])
		}

		l := make([]int64, m)
		for i := 0; i < m; i++ {
			fmt.Fscan(r, &l[i])
		}

		t := make([]int64, q)
		for i := 0; i < q; i++ {
			fmt.Fscan(r, &t[i])
		}

		type task struct {
			d, a int64
		}
		tasks := make([]task, n)
		for i := 0; i < n; i++ {
			tasks[i] = task{d[i], a[i]}
		}
		sort.Slice(tasks, func(i, j int) bool {
			return tasks[i].d < tasks[j].d
		})

		pref := make([]int64, n+1)
		slack := make([]int64, n)
		for i := 0; i < n; i++ {
			pref[i+1] = pref[i] + tasks[i].a
			slack[i] = tasks[i].d - pref[i+1]
		}

		const INF int64 = 1 << 60
		suffMin := make([]int64, n+1)
		suffMin[n] = INF
		for i := n - 1; i >= 0; i-- {
			if slack[i] < suffMin[i+1] {
				suffMin[i] = slack[i]
			} else {
				suffMin[i] = suffMin[i+1]
			}
		}

		epPref := make([]int64, m+1)
		for i := 0; i < m; i++ {
			epPref[i+1] = epPref[i] + l[i]
		}

		ans := make([]int, q)
		for i := 0; i < q; i++ {
			currT := t[i]

			k := sort.Search(n, func(idx int) bool {
				return tasks[idx].d > currT
			})

			sumDone := pref[k]
			leftFree := currT - sumDone

			rightMin := INF
			if k < n {
				rightMin = suffMin[k]
			}

			avail := leftFree
			if rightMin < avail {
				avail = rightMin
			}

			cnt := sort.Search(m+1, func(idx int) bool {
				return epPref[idx] > avail
			})
			ans[i] = cnt - 1
		}

		for i := 0; i < q; i++ {
			if i > 0 {
				fmt.Fprint(w, " ")
			}
			fmt.Fprint(w, ans[i])
		}
		if tc < T-1 {
			fmt.Fprintln(w)
		}
	}
}
```