← Home
For problem statement at 2000-2999/2000-2099/2030-2039/2032/problemF.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2030-2039/2032/verifierF.go ends with empty input
exit status 1 can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"os"
)

const MOD int64 = 998244353

type FastScanner struct {
	r *bufio.Reader
}

func NewFastScanner() *FastScanner {
	return &FastScanner{r: bufio.NewReaderSize(os.Stdin, 1<<20)}
}

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

func add(a, b int64) int64 {
	a += b
	if a >= MOD {
		a -= MOD
	}
	return a
}

func sub(a, b int64) int64 {
	a -= b
	if a < 0 {
		a += MOD
	}
	return a
}

func main() {
	in := NewFastScanner()
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	t := int(in.NextInt64())

	for ; t > 0; t-- {
		n := int(in.NextInt64())

		S0, S1 := int64(1), int64(0)

		A0 := make([]int64, 0, n+1)
		A1 := make([]int64, 0, n+1)
		idxMap := make(map[uint64]int, n+1)

		// initial prefix xor 0
		A0 = append(A0, 1)
		A1 = append(A1, 0)
		idxMap[0] = 0

		var p uint64 = 0
		var ans int64 = 0

		for i := 1; i <= n; i++ {
			x := uint64(in.NextInt64())
			p ^= x

			idx, ok := idxMap[p]
			if !ok {
				idx = len(A0)
				idxMap[p] = idx
				A0 = append(A0, 0)
				A1 = append(A1, 0)
			}

			E0 := A0[idx]
			E1 := A1[idx]

			dp0 := add(sub(S1, E1), E0)
			dp1 := add(sub(S0, E0), E1)

			if i == n {
				ans = dp1
			}

			S0 = add(S0, dp0)
			S1 = add(S1, dp1)

			A0[idx] = add(A0[idx], dp0)
			A1[idx] = add(A1[idx], dp1)
		}

		fmt.Fprintln(out, ans)
	}
}