For problem statement at 0-999/500-599/550-559/550/problemE.txt this is a correct solution, but verifier at 0-999/500-599/550-559/550/verifierE.go ends with case 2 failed: expected
YES
(0)->(1->0->0)->0
got
YES
(0->1->0)->0
input:
4
0 1 0 0
exit status 1 can you fix the verifier? ```go
package main
import (
"fmt"
"strconv"
"strings"
)
func main() {
var n int
fmt.Scan(&n)
a := make([]int, n)
for i := 0; i < n; i++ {
fmt.Scan(&a[i])
}
if a[n-1] == 1 {
fmt.Println("NO")
return
}
if n >= 2 && a[n-1] == 0 && a[n-2] == 0 {
allOnes := true
for i := 0; i < n-2; i++ {
if a[i] != 1 {
allOnes = false
break
}
}
if allOnes {
fmt.Println("NO")
return
}
}
fmt.Println("YES")
if n == 1 {
fmt.Println("0")
return
}
prefix := buildPrefix(a[:n-1])
fmt.Printf("(%s)->%d\n", prefix, a[n-1])
}
func buildPrefix(a []int) string {
m := len(a)
if m == 0 {
return ""
}
var sb strings.Builder
if a[m-1] == 1 {
for i := 0; i < m; i++ {
if i > 0 {
sb.WriteString("->")
}
sb.WriteString(strconv.Itoa(a[i]))
}
return sb.String()
} else {
if a[0] == 0 {
for i := 0; i < m; i++ {
if i > 0 {
sb.WriteString("->")
}
sb.WriteString(strconv.Itoa(a[i]))
}
return sb.String()
} else {
p := 0
for p < m && a[p] == 1 {
p++
}
sb.WriteString("(")
for i := 0; i < p; i++ {
if i > 0 {
sb.WriteString("->")
}
sb.WriteString(strconv.Itoa(a[i]))
}
sb.WriteString(")->")
for i := p; i < m; i++ {
if i > p {
sb.WriteString("->")
}
sb.WriteString(strconv.Itoa(a[i]))
}
return sb.String()
}
}
}
```