For problem statement at 1000-1999/1000-1099/1080-1089/1081/problemE.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1080-1089/1081/verifierE.go ends with All 100 tests passed can you fix the verifier? package main
import (
"bufio"
"fmt"
"math"
"os"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
const maxCapacity = 1024 * 1024 * 10
buf := make([]byte, maxCapacity)
scanner.Buffer(buf, maxCapacity)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
x := make([]int64, n+1)
for i := 2; i <= n; i += 2 {
scanner.Scan()
val, _ := strconv.ParseInt(scanner.Text(), 10, 64)
x[i] = val
}
a := make([]int64, n+1)
a[0] = 0
for k := 1; k <= n/2; k++ {
xk := x[2*k]
found := false
limit := int64(math.Sqrt(float64(xk)))
for A := limit; A >= 1; A-- {
if xk%A == 0 {
B := xk / A
if (B-A)%2 == 0 {
a2km1 := (B - A) / 2
if a2km1 > a[2*k-2] {
a[2*k-1] = a2km1
a[2*k] = (B + A) / 2
found = true
break
}
}
}
}
if !found {
fmt.Println("No")
return
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
fmt.Fprintln(out, "Yes")
for i := 1; i <= n; i++ {
if i > 1 {
fmt.Fprint(out, " ")
}
if i%2 == 1 {
xi := a[i]*a[i] - a[i-1]*a[i-1]
fmt.Fprint(out, xi)
} else {
fmt.Fprint(out, x[i])
}
}
fmt.Fprintln(out)
}