← Home
For problem statement at 0-999/200-299/210-219/211/problemC.txt this is a correct solution, but verifier at 0-999/200-299/210-219/211/verifierC.go ends with All 101 tests passed can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"math/big"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	var s string
	fmt.Fscan(in, &s)

	var trans [2][4][2]int
	var cnt [2][4]int

	for st := 0; st < 4; st++ {
		a := (st >> 1) & 1
		b := st & 1
		for c := 0; c < 2; c++ {
			y := 0
			if b == 1 {
				y = c
			} else {
				y = a
			}
			trans[y][st][cnt[y][st]] = (b << 1) | c
			cnt[y][st]++
		}
	}

	var ans big.Int

	for start := 0; start < 4; start++ {
		var dp [4]big.Int
		dp[start].SetInt64(1)

		for i := 0; i < len(s); i++ {
			label := 0
			if s[i] == 'A' {
				label = 1
			}
			var ndp [4]big.Int
			for st := 0; st < 4; st++ {
				if dp[st].Sign() == 0 {
					continue
				}
				for k := 0; k < cnt[label][st]; k++ {
					nxt := trans[label][st][k]
					ndp[nxt].Add(&ndp[nxt], &dp[st])
				}
			}
			dp = ndp
		}

		ans.Add(&ans, &dp[start])
	}

	fmt.Print(ans.String())
}