← Home
For problem statement at 1000-1999/1500-1599/1550-1559/1558/problemA.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1550-1559/1558/verifierA.go ends with All 100 tests passed can you fix the verifier? package main

import (
	"bufio"
	"io"
	"os"
	"strconv"
	"strings"
)

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

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

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

func abs(x int) int {
	if x < 0 {
		return -x
	}
	return x
}

func main() {
	fs := NewFastScanner()
	t := fs.NextInt()

	var out strings.Builder
	out.Grow(1 << 20)

	process := func(possible []bool, a, n, sA int) {
		sB := n - sA
		l := abs(a - sA)
		r := n - abs(a-sB)
		for k := l; k <= r; k += 2 {
			possible[k] = true
		}
	}

	for ; t > 0; t-- {
		a := fs.NextInt()
		b := fs.NextInt()
		n := a + b

		possible := make([]bool, n+1)

		s1 := n / 2
		s2 := (n + 1) / 2

		process(possible, a, n, s1)
		if s2 != s1 {
			process(possible, a, n, s2)
		}

		cnt := 0
		for i := 0; i <= n; i++ {
			if possible[i] {
				cnt++
			}
		}

		out.WriteString(strconv.Itoa(cnt))
		out.WriteByte('\n')

		first := true
		for i := 0; i <= n; i++ {
			if possible[i] {
				if !first {
					out.WriteByte(' ')
				}
				first = false
				out.WriteString(strconv.Itoa(i))
			}
		}
		out.WriteByte('\n')
	}

	w := bufio.NewWriterSize(os.Stdout, 1<<20)
	w.WriteString(out.String())
	w.Flush()
}