← Home
For problem statement at 1000-1999/1600-1699/1610-1619/1613/problemD.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1610-1619/1613/verifierD.go ends with All tests passed can you fix the verifier? package main

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

func main() {
	reader := bufio.NewReader(os.Stdin)
	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	var t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	MOD := 998244353

	for tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(reader, &n)

		dp1_arr := make([]int, n+3)
		dp2_arr := make([]int, n+3)

		dp1_arr[0] = 1

		for i := 0; i < n; i++ {
			var x int
			fmt.Fscan(reader, &x)

			dp1_x := dp1_arr[x+1]
			dp1_x_minus_1 := dp1_arr[x]
			dp1_x_minus_2 := 0
			if x >= 1 {
				dp1_x_minus_2 = dp1_arr[x-1]
			}

			dp2_x_minus_1 := 0
			if x >= 1 {
				dp2_x_minus_1 = dp2_arr[x-1]
			}
			dp2_x_plus_1 := dp2_arr[x+1]

			new_dp1_x := ((2*dp1_x)%MOD + dp1_x_minus_1) % MOD
			new_dp2_x_minus_1 := ((2*dp2_x_minus_1)%MOD + dp1_x_minus_2) % MOD
			new_dp2_x_plus_1 := (2 * dp2_x_plus_1) % MOD

			dp1_arr[x+1] = new_dp1_x
			if x >= 1 {
				dp2_arr[x-1] = new_dp2_x_minus_1
			}
			dp2_arr[x+1] = new_dp2_x_plus_1
		}

		ans := 0
		for i := 1; i < n+3; i++ {
			ans = (ans + dp1_arr[i]) % MOD
		}
		for i := 0; i < n+3; i++ {
			ans = (ans + dp2_arr[i]) % MOD
		}

		fmt.Fprintln(writer, ans)
	}
}