← Home
For problem statement at 1000-1999/1400-1499/1450-1459/1451/problemE2.txt this is a correct solution, but verifier at 1000-1999/1400-1499/1450-1459/1451/verifierE2.go ends with All tests passed can you fix the verifier? package main

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

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

	var n int
	fmt.Fscan(reader, &n)

	pos := make([]int, n)
	pos[0] = 1
	x := make([]int, n+1)

	dupI, dupJ := 0, 0

	for i := 2; i <= n; i++ {
		fmt.Fprintf(writer, "XOR 1 %d\n", i)
		writer.Flush()
		fmt.Fscan(reader, &x[i])
		if pos[x[i]] != 0 {
			dupI = i
			dupJ = pos[x[i]]
		} else {
			pos[x[i]] = i
		}
	}

	var a1 int

	if dupI != 0 {
		fmt.Fprintf(writer, "AND %d %d\n", dupI, dupJ)
		writer.Flush()
		var val int
		fmt.Fscan(reader, &val)
		a1 = val ^ x[dupI]
	} else {
		idx1 := pos[1]
		idx2 := pos[2]
		
		fmt.Fprintf(writer, "AND 1 %d\n", idx1)
		writer.Flush()
		var val1 int
		fmt.Fscan(reader, &val1)
		
		fmt.Fprintf(writer, "AND 1 %d\n", idx2)
		writer.Flush()
		var val2 int
		fmt.Fscan(reader, &val2)
		
		a1 = val1 | (val2 & 1)
	}

	a := make([]int, n+1)
	a[1] = a1
	for i := 2; i <= n; i++ {
		a[i] = a1 ^ x[i]
	}

	fmt.Fprintf(writer, "!")
	for i := 1; i <= n; i++ {
		fmt.Fprintf(writer, " %d", a[i])
	}
	fmt.Fprintf(writer, "\n")
	writer.Flush()
}