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

import (
	"io"
	"os"
	"strconv"
)

const MOD int64 = 998244353

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0
	nextInt := func() int {
		for idx < len(data) && (data[idx] < '0' || data[idx] > '9') {
			idx++
		}
		val := 0
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			val = val*10 + int(data[idx]-'0')
			idx++
		}
		return val
	}

	n := nextInt()
	var single [2]int64
	var dp [2][2]int64
	var ans int64

	for i := 0; i < n; i++ {
		r := nextInt() & 1
		oldSingle := single
		oldDp := dp

		for p := 0; p < 2; p++ {
			for q := 0; q < 2; q++ {
				if ((p + q + r) & 1) == 0 {
					v := oldDp[p][q]
					ans += v
					if ans >= MOD {
						ans -= MOD
					}
					dp[q][r] += v
					if dp[q][r] >= MOD {
						dp[q][r] -= MOD
					}
				}
			}
		}

		for p := 0; p < 2; p++ {
			dp[p][r] += oldSingle[p]
			if dp[p][r] >= MOD {
				dp[p][r] -= MOD
			}
		}

		single[r]++
		if single[r] >= MOD {
			single[r] -= MOD
		}
	}

	os.Stdout.WriteString(strconv.FormatInt(ans%MOD, 10))
}