For problem statement at 0-999/700-799/740-749/748/problemE.txt this is a correct solution, but verifier at 0-999/700-799/740-749/748/verifierE.go ends with All tests passed can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"os"
)
func readInt(reader *bufio.Reader) int {
res := 0
for {
b, err := reader.ReadByte()
if err != nil {
return res
}
if b >= '0' && b <= '9' {
res = int(b - '0')
break
}
}
for {
b, err := reader.ReadByte()
if err != nil || b < '0' || b > '9' {
break
}
res = res*10 + int(b-'0')
}
return res
}
func readInt64(reader *bufio.Reader) int64 {
var res int64 = 0
for {
b, err := reader.ReadByte()
if err != nil {
return res
}
if b >= '0' && b <= '9' {
res = int64(b - '0')
break
}
}
for {
b, err := reader.ReadByte()
if err != nil || b < '0' || b > '9' {
break
}
res = res*10 + int64(b-'0')
}
return res
}
func main() {
reader := bufio.NewReaderSize(os.Stdin, 64*1024)
n := readInt(reader)
if n == 0 {
return
}
k := readInt64(reader)
maxA := 0
a := make([]int, n)
for i := 0; i < n; i++ {
a[i] = readInt(reader)
if a[i] > maxA {
maxA = a[i]
}
}
aCount := make([]int32, maxA+2)
c := make([]int64, maxA+2)
for i := 0; i < n; i++ {
aCount[a[i]]++
c[a[i]]++
}
for v := maxA; v >= 2; v-- {
if c[v] > 0 {
half1 := v / 2
half2 := (v + 1) / 2
c[half1] += c[v]
c[half2] += c[v]
}
}
for v := maxA; v >= 1; v-- {
c[v] += c[v+1]
}
ans := -1
var currentSA int64 = 0
for x := maxA; x >= 1; x-- {
currentSA += int64(aCount[x])
var scVal int64 = 0
if 2*x <= maxA {
scVal = c[2*x]
}
if currentSA+scVal >= k {
ans = x
break
}
}
fmt.Println(ans)
}
```