← Home
For problem statement at 2000-2999/2000-2099/2020-2029/2022/problemD2.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2020-2029/2022/verifierD2.go ends with could not parse candidate output: expected 502 outputs, got 44
exit status 1 can you fix the verifier? package main

import (
	"fmt"
	"os"
)

func main() {
	var t int
	if _, err := fmt.Fscan(os.Stdin, &t); err != nil {
		return
	}

	for i := 0; i < t; i++ {
		var n int
		if _, err := fmt.Fscan(os.Stdin, &n); err != nil {
			return
		}

		query := func(u, v int) int {
			fmt.Printf("? %d %d\n", u, v)
			var res int
			fmt.Fscan(os.Stdin, &res)
			if res == -1 {
				os.Exit(0)
			}
			return res
		}

		pairsToTest := (n - 2) / 2
		if n%2 == 1 {
			pairsToTest = (n - 1) / 2
		}

		impostor := -1

		for j := 1; j <= pairsToTest; j++ {
			A := 2*j - 1
			B := 2 * j

			ans1 := query(A, B)
			ans2 := query(B, A)

			if ans1 != ans2 {
				C := 1
				if A == 1 {
					C = 3
				}

				ans3 := query(A, C)
				ans4 := query(C, A)

				if ans3 != ans4 {
					impostor = A
				} else {
					impostor = B
				}
				break
			}
		}

		if impostor == -1 {
			if n%2 == 1 {
				impostor = n
			} else {
				A := n - 1
				B := n
				C := 1

				ans3 := query(A, C)
				ans4 := query(C, A)

				if ans3 != ans4 {
					impostor = A
				} else {
					impostor = B
				}
			}
		}

		fmt.Printf("! %d\n", impostor)
	}
}