← Home
For problem statement at 1000-1999/1300-1399/1360-1369/1365/problemG.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1360-1369/1365/verifierG.go ends with Problem G is interactive and cannot be automatically verified. can you fix the verifier? package main

import (
	"bufio"
	"fmt"
	"math/bits"
	"os"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int
	if _, err := fmt.Fscan(in, &n); err != nil {
		return
	}

	const m = 13
	masks := make([]int, 0, n)
	for mask := 0; mask < (1 << m) && len(masks) < n; mask++ {
		if bits.OnesCount(uint(mask)) == 6 {
			masks = append(masks, mask)
		}
	}

	groups := make([][]int, m)
	for i, mask := range masks {
		for b := 0; b < m; b++ {
			if (mask>>b)&1 == 1 {
				groups[b] = append(groups[b], i+1)
			}
		}
	}

	resp := make([]uint64, m)
	for b := 0; b < m; b++ {
		if len(groups[b]) == 0 {
			continue
		}
		fmt.Fprint(out, "1 ", len(groups[b]))
		for _, idx := range groups[b] {
			fmt.Fprint(out, " ", idx)
		}
		fmt.Fprintln(out)
		out.Flush()

		var x int64
		if _, err := fmt.Fscan(in, &x); err != nil {
			return
		}
		if x == -1 {
			return
		}
		resp[b] = uint64(x)
	}

	ans := make([]uint64, n)
	for i, mask := range masks {
		var v uint64
		for b := 0; b < m; b++ {
			if (mask>>b)&1 == 0 {
				v |= resp[b]
			}
		}
		ans[i] = v
	}

	fmt.Fprint(out, "2")
	for i := 0; i < n; i++ {
		fmt.Fprint(out, " ", ans[i])
	}
	fmt.Fprintln(out)
	out.Flush()
}