← Home
For problem statement at 1000-1999/1200-1299/1290-1299/1290/problemD.txt this is a correct solution, but verifier at 1000-1999/1200-1299/1290-1299/1290/verifierD.go ends with Problem D is interactive and cannot be automatically verified. can you fix the verifier? package main

import (
	"fmt"
)

func main() {
	var n, k int
	fmt.Scan(&n, &k)

	if n == 1 {
		fmt.Println("! 1")
		return
	}

	B := k / 2
	if B == 0 {
		B = 1
	}

	m := n / B

	paths := make([][]int, m/2)
	for i := 0; i < m/2; i++ {
		path := make([]int, m)
		for j := 0; j < m; j++ {
			if j == 0 {
				path[j] = i
			} else if j%2 == 1 {
				path[j] = (i + (j+1)/2) % m
			} else {
				path[j] = (i - j/2%m + m) % m
			}
		}
		paths[i] = path
	}

	isDup := make([]bool, n)

	for i := 0; i < m/2; i++ {
		fmt.Println("R")
		for _, v := range paths[i] {
			for j := 0; j < B; j++ {
				element := v*B + j
				if !isDup[element] {
					fmt.Printf("? %d\n", element+1)
					var ans string
					fmt.Scan(&ans)
					if ans == "Y" {
						isDup[element] = true
					}
				}
			}
		}
	}

	distinct := 0
	for i := 0; i < n; i++ {
		if !isDup[i] {
			distinct++
		}
	}

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