← Home
For problem statement at 1000-1999/1900-1999/1910-1919/1913/problemC.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1910-1919/1913/verifierC.go ends with All 100 tests passed can you fix the verifier? package main

import (
	"bufio"
	"os"
)

func main() {
	reader := bufio.NewReaderSize(os.Stdin, 1<<20)
	writer := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer writer.Flush()

	nextInt := func() int64 {
		var sign int64 = 1
		var val int64 = 0
		c, err := reader.ReadByte()
		for (c < '0' || c > '9') && c != '-' {
			c, err = reader.ReadByte()
			if err != nil {
				return 0
			}
		}
		if c == '-' {
			sign = -1
			c, _ = reader.ReadByte()
		}
		for c >= '0' && c <= '9' {
			val = val*10 + int64(c-'0')
			c, err = reader.ReadByte()
			if err != nil {
				break
			}
		}
		return val * sign
	}

	m := int(nextInt())
	var cnt [30]int64

	for i := 0; i < m; i++ {
		t := nextInt()
		v := nextInt()
		if t == 1 {
			if v >= 0 && v < 30 {
				cnt[v]++
			}
		} else {
			remain := v
			for b := 29; b >= 0 && remain > 0; b-- {
				den := int64(1) << uint(b)
				canUse := remain / den
				if canUse > 0 {
					use := cnt[b]
					if use > canUse {
						use = canUse
					}
					remain -= use * den
				}
			}
			if remain == 0 {
				writer.WriteString("YES\n")
			} else {
				writer.WriteString("NO\n")
			}
		}
	}
}