← Home
For problem statement at 1000-1999/1300-1399/1350-1359/1358/problemE.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1350-1359/1358/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main

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

func readInt64(reader *bufio.Reader) int64 {
	var res int64
	var sign int64 = 1
	var c byte
	var err error
	for {
		c, err = reader.ReadByte()
		if err != nil {
			return 0
		}
		if c == '-' {
			sign = -1
			break
		}
		if c >= '0' && c <= '9' {
			res = int64(c - '0')
			break
		}
	}
	for {
		c, err = reader.ReadByte()
		if err != nil {
			break
		}
		if c >= '0' && c <= '9' {
			res = res*10 + int64(c-'0')
		} else {
			break
		}
	}
	return res * sign
}

func main() {
	reader := bufio.NewReaderSize(os.Stdin, 65536)
	
	n := int(readInt64(reader))
	if n == 0 {
		return
	}

	m := (n + 1) / 2
	S := make([]int64, m+1)
	for i := 1; i <= m; i++ {
		a := readInt64(reader)
		S[i] = S[i-1] + a
	}

	x := readInt64(reader)
	Sn := S[m] + int64(n-m)*x

	if Sn > 0 {
		fmt.Println(n)
		return
	}

	if x >= 0 {
		fmt.Println(-1)
		return
	}

	M := make([]int64, m)
	minP := S[m] - S[0]
	M[0] = minP
	for i := 1; i < m; i++ {
		Pi := S[m] - S[i] + int64(i)*x
		if Pi < minP {
			minP = Pi
		}
		M[i] = minP
	}

	for k := n - 1; k >= n-m+1; k-- {
		if M[n-k] > int64(m-k)*x {
			fmt.Println(k)
			return
		}
	}

	fmt.Println(-1)
}
```