```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")
}
}
}
```