← Home
For problem statement at 1000-1999/1900-1999/1920-1929/1923/problemB.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1920-1929/1923/verifierB.go ends with All 100 tests passed. can you fix the verifier? ```go
package main

import (
	"bytes"
	"io"
	"os"
	"sort"
)

type FastScanner struct {
	data []byte
	idx  int
	n    int
}

func NewFastScanner() *FastScanner {
	b, _ := io.ReadAll(os.Stdin)
	return &FastScanner{data: b, n: len(b)}
}

func (fs *FastScanner) NextInt() int {
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if (c >= '0' && c <= '9') || c == '-' {
			break
		}
		fs.idx++
	}
	sign := 1
	if fs.idx < fs.n && fs.data[fs.idx] == '-' {
		sign = -1
		fs.idx++
	}
	val := 0
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		val = val*10 + int(c-'0')
		fs.idx++
	}
	return sign * val
}

type Pair struct {
	d int
	h int64
}

func main() {
	fs := NewFastScanner()
	t := fs.NextInt()
	var out bytes.Buffer

	for ; t > 0; t-- {
		n := fs.NextInt()
		k := int64(fs.NextInt())

		a := make([]int64, n)
		for i := 0; i < n; i++ {
			a[i] = int64(fs.NextInt())
		}

		p := make([]Pair, n)
		for i := 0; i < n; i++ {
			x := fs.NextInt()
			if x < 0 {
				x = -x
			}
			p[i] = Pair{d: x, h: a[i]}
		}

		sort.Slice(p, func(i, j int) bool {
			return p[i].d < p[j].d
		})

		var sum int64
		ok := true
		for i := 0; i < n; i++ {
			sum += p[i].h
			if sum > k*int64(p[i].d) {
				ok = false
				break
			}
		}

		if ok {
			out.WriteString("YES\n")
		} else {
			out.WriteString("NO\n")
		}
	}

	os.Stdout.Write(out.Bytes())
}
```