← Home
For problem statement at 1000-1999/1900-1999/1990-1999/1997/problemE.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1990-1999/1997/verifierE.go ends with All tests passed can you fix the verifier?  ```go
package main

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

type Fenwick struct {
	n    int
	tree []int
}

func NewFenwick(n int) *Fenwick {
	return &Fenwick{n: n, tree: make([]int, n+1)}
}

func (f *Fenwick) Update(idx, delta int) {
	for idx <= f.n {
		f.tree[idx] += delta
		idx += idx & -idx
	}
}

func (f *Fenwick) Query(idx int) int {
	res := 0
	for idx > 0 {
		res += f.tree[idx]
		idx -= idx & -idx
	}
	return res
}

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

	var n, q int
	fmt.Fscan(in, &n, &q)
	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &a[i])
	}

	ft := NewFenwick(n)
	kMin := make([]int, n+1)

	for i := 1; i <= n; i++ {
		val := a[i-1]
		lo, hi := 1, i
		for lo < hi {
			mid := (lo + hi) / 2
			cnt := ft.Query(mid)
			if int64(cnt) < int64(mid)*int64(val) {
				hi = mid
			} else {
				lo = mid + 1
			}
		}
		kMin[i] = lo
		ft.Update(lo, 1)
	}

	for i := 0; i < q; i++ {
		var idx, x int
		fmt.Fscan(in, &idx, &x)
		if x >= kMin[idx] {
			fmt.Fprintln(out, "YES")
		} else {
			fmt.Fprintln(out, "NO")
		}
	}
}
```