For problem statement at 1000-1999/1500-1599/1530-1539/1534/problemE.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1530-1539/1534/verifierE.go ends with Problem E is interactive and cannot be automatically verified. can you fix the verifier? package main
import (
"fmt"
"sort"
)
func main() {
var n, k int
if _, err := fmt.Scan(&n, &k); err != nil {
return
}
if k%2 == 0 && n%2 == 1 {
fmt.Println("-1")
return
}
var q int
for q = 1; q <= 500; q++ {
if q*k < n {
continue
}
if (q*k-n)%2 != 0 {
continue
}
maxC := q
if q%2 == 0 {
maxC = q - 1
}
if q*k <= n*maxC {
break
}
}
if q > 500 {
fmt.Println("-1")
return
}
c := make([]int, n)
for i := 0; i < n; i++ {
c[i] = 1
}
rem := (q*k - n) / 2
maxC := q
if q%2 == 0 {
maxC = q - 1
}
for i := 0; i < n && rem > 0; i++ {
canAdd := (maxC - 1) / 2
if rem < canAdd {
canAdd = rem
}
c[i] += canAdd * 2
rem -= canAdd
}
type Element struct {
id int
count int
}
elements := make([]Element, n)
for i := 0; i < n; i++ {
elements[i] = Element{id: i + 1, count: c[i]}
}
totalXor := 0
for step := 0; step < q; step++ {
sort.Slice(elements, func(i, j int) bool {
return elements[i].count > elements[j].count
})
fmt.Print("?")
for i := 0; i < k; i++ {
fmt.Printf(" %d", elements[i].id)
elements[i].count--
}
fmt.Println()
var xor int
fmt.Scan(&xor)
totalXor ^= xor
}
fmt.Printf("! %d\n", totalXor)
}