← Home
For problem statement at 0-999/100-199/190-199/198/problemB.txt this is a correct solution, but verifier at 0-999/100-199/190-199/198/verifierB.go ends with All tests passed can you fix the verifier? package main

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

type Node struct {
	side int
	pos  int
	t    int
}

func main() {
	in := bufio.NewReader(os.Stdin)
	var n, k int
	if _, err := fmt.Fscan(in, &n, &k); err != nil {
		return
	}
	var sL, sR string
	fmt.Fscan(in, &sL)
	fmt.Fscan(in, &sR)

	walls := [2][]byte{[]byte(sL), []byte(sR)}
	visited := [2][]bool{make([]bool, n+5), make([]bool, n+5)}

	q := make([]Node, 1, 2*n+10)
	q[0] = Node{side: 0, pos: 1, t: 0}
	visited[0][1] = true
	head := 0

	for head < len(q) {
		cur := q[head]
		head++
		if cur.pos <= cur.t {
			continue
		}

		nt := cur.t + 1

		// Up
		np := cur.pos + 1
		if np > n {
			fmt.Println("YES")
			return
		}
		if np >= 1 && np <= n && walls[cur.side][np-1] == '-' && !visited[cur.side][np] && np > nt {
			visited[cur.side][np] = true
			q = append(q, Node{side: cur.side, pos: np, t: nt})
		}

		// Down
		np = cur.pos - 1
		if np >= 1 && np <= n && walls[cur.side][np-1] == '-' && !visited[cur.side][np] && np > nt {
			visited[cur.side][np] = true
			q = append(q, Node{side: cur.side, pos: np, t: nt})
		}

		// Jump
		np = cur.pos + k
		ns := 1 - cur.side
		if np > n {
			fmt.Println("YES")
			return
		}
		if np >= 1 && np <= n && walls[ns][np-1] == '-' && !visited[ns][np] && np > nt {
			visited[ns][np] = true
			q = append(q, Node{side: ns, pos: np, t: nt})
		}
	}

	fmt.Println("NO")
}