← Home
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)
}