For problem statement at 0-999/700-799/770-779/778/problemB.txt this is a correct solution, but verifier at 0-999/700-799/770-779/778/verifierB.go ends with All tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"strconv"
)
type Var struct {
isConst bool
val string
op1 int
op2 int
op int
}
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
m, _ := strconv.Atoi(scanner.Text())
vars := make([]Var, n)
nameToId := make(map[string]int)
for i := 0; i < n; i++ {
scanner.Scan()
name := scanner.Text()
scanner.Scan() // skip :=
scanner.Scan()
tok := scanner.Text()
var v Var
if tok[0] == '0' || tok[0] == '1' {
v.isConst = true
v.val = tok
} else {
v.isConst = false
if tok == "?" {
v.op1 = -1
} else {
v.op1 = nameToId[tok]
}
scanner.Scan()
opStr := scanner.Text()
if opStr == "AND" {
v.op = 0
} else if opStr == "OR" {
v.op = 1
} else {
v.op = 2
}
scanner.Scan()
tok2 := scanner.Text()
if tok2 == "?" {
v.op2 = -1
} else {
v.op2 = nameToId[tok2]
}
}
nameToId[name] = i
vars[i] = v
}
minAns := make([]byte, m)
maxAns := make([]byte, m)
val := make([]int, n)
for j := 0; j < m; j++ {
sum0 := 0
sum1 := 0
for bitVal := 0; bitVal <= 1; bitVal++ {
sum := 0
for i := 0; i < n; i++ {
v := vars[i]
if v.isConst {
val[i] = int(v.val[j] - '0')
} else {
v1 := bitVal
if v.op1 != -1 {
v1 = val[v.op1]
}
v2 := bitVal
if v.op2 != -1 {
v2 = val[v.op2]
}
res := 0
if v.op == 0 {
res = v1 & v2
} else if v.op == 1 {
res = v1 | v2
} else {
res = v1 ^ v2
}
val[i] = res
}
sum += val[i]
}
if bitVal == 0 {
sum0 = sum
} else {
sum1 = sum
}
}
if sum0 <= sum1 {
minAns[j] = '0'
} else {
minAns[j] = '1'
}
if sum0 >= sum1 {
maxAns[j] = '0'
} else {
maxAns[j] = '1'
}
}
fmt.Println(string(minAns))
fmt.Println(string(maxAns))
}