← Home
For problem statement at 2000-2999/2100-2199/2150-2159/2157/problemB.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2150-2159/2157/verifierB.go ends with Passed 100/100 test cases. can you fix the verifier? package main

import (
	"io"
	"os"
	"strings"
)

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

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

func (fs *FastScanner) skip() {
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c > ' ' {
			return
		}
		fs.idx++
	}
}

func (fs *FastScanner) NextInt64() int64 {
	fs.skip()
	sign := int64(1)
	if fs.data[fs.idx] == '-' {
		sign = -1
		fs.idx++
	}
	var v int64
	for fs.idx < fs.n {
		c := fs.data[fs.idx]
		if c < '0' || c > '9' {
			break
		}
		v = v*10 + int64(c-'0')
		fs.idx++
	}
	return v * sign
}

func (fs *FastScanner) NextString() string {
	fs.skip()
	start := fs.idx
	for fs.idx < fs.n && fs.data[fs.idx] > ' ' {
		fs.idx++
	}
	return string(fs.data[start:fs.idx])
}

func abs64(x int64) int64 {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	fs := NewFastScanner()
	t := int(fs.NextInt64())
	var out strings.Builder
	out.Grow(t * 4)

	for i := 0; i < t; i++ {
		n := int(fs.NextInt64())
		x := fs.NextInt64()
		y := fs.NextInt64()
		s := fs.NextString()

		var a int64
		for j := 0; j < n; j++ {
			if s[j] == '4' {
				a++
			}
		}
		b := int64(n) - a

		ax := abs64(x)
		ay := abs64(y)

		var d int64
		if ax > b {
			d += ax - b
		}
		if ay > b {
			d += ay - b
		}

		if d <= a {
			out.WriteString("YES\n")
		} else {
			out.WriteString("NO\n")
		}
	}

	os.Stdout.WriteString(out.String())
}