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()
}