← Home
For problem statement at 0-999/900-999/990-999/991/problemD.txt this is a correct solution, but verifier at 0-999/900-999/990-999/991/verifierD.go ends with All tests passed can you fix the verifier? package main

import (
	"fmt"
)

func main() {
	var s1, s2 string
	if _, err := fmt.Scan(&s1, &s2); err != nil {
		return
	}
	n := len(s1)
	if n == 0 {
		fmt.Println(0)
		return
	}

	dp := []int{-1, -1, -1, -1}
	base0 := 0
	if s1[0] == 'X' {
		base0 |= 1
	}
	if s2[0] == 'X' {
		base0 |= 2
	}
	dp[base0] = 0

	for i := 1; i < n; i++ {
		nextDp := []int{-1, -1, -1, -1}
		base := 0
		if s1[i] == 'X' {
			base |= 1
		}
		if s2[i] == 'X' {
			base |= 2
		}

		for prevMask := 0; prevMask < 4; prevMask++ {
			if dp[prevMask] == -1 {
				continue
			}
			if dp[prevMask] > nextDp[base] {
				nextDp[base] = dp[prevMask]
			}
			if prevMask == 0 && (base&1) == 0 {
				if dp[prevMask]+1 > nextDp[base|1] {
					nextDp[base|1] = dp[prevMask] + 1
				}
			}
			if prevMask == 0 && (base&2) == 0 {
				if dp[prevMask]+1 > nextDp[base|2] {
					nextDp[base|2] = dp[prevMask] + 1
				}
			}
			if (prevMask&1) == 0 && base == 0 {
				if dp[prevMask]+1 > nextDp[base|3] {
					nextDp[base|3] = dp[prevMask] + 1
				}
			}
			if (prevMask&2) == 0 && base == 0 {
				if dp[prevMask]+1 > nextDp[base|3] {
					nextDp[base|3] = dp[prevMask] + 1
				}
			}
		}
		dp = nextDp
	}

	ans := 0
	for _, v := range dp {
		if v > ans {
			ans = v
		}
	}
	fmt.Println(ans)
}