← Home
For problem statement at 1000-1999/1000-1099/1040-1049/1041/problemF.txt this is a correct solution, but verifier at 1000-1999/1000-1099/1040-1049/1041/verifierF.go ends with All tests passed can you fix the verifier? package main

import (
	"fmt"
	"io"
	"os"
	"sort"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	at := 0

	readInt := func() int {
		for at < len(data) && (data[at] < '0' || data[at] > '9') && data[at] != '-' {
			at++
		}
		if at == len(data) {
			return 0
		}
		sign := 1
		if data[at] == '-' {
			sign = -1
			at++
		}
		val := 0
		for at < len(data) && data[at] >= '0' && data[at] <= '9' {
			val = val*10 + int(data[at]-'0')
			at++
		}
		return val * sign
	}

	n := readInt()
	if n == 0 && at == len(data) {
		return
	}
	_ = readInt() 

	A := make([]int, n)
	for i := 0; i < n; i++ {
		A[i] = readInt()
	}

	m := readInt()
	_ = readInt() 

	B := make([]int, m)
	for i := 0; i < m; i++ {
		B[i] = readInt()
	}

	maxSensors := 2

	keys := make([]int, n+m)
	for k := 0; k <= 29; k++ {
		mask := (1 << (k + 1)) - 1
		flip := 1 << k

		idx := 0
		for i := 0; i < n; i++ {
			keys[idx] = A[i] & mask
			idx++
		}
		for i := 0; i < m; i++ {
			keys[idx] = (B[i] ^ flip) & mask
			idx++
		}

		sort.Ints(keys)

		currentRun := 1
		for i := 1; i < len(keys); i++ {
			if keys[i] == keys[i-1] {
				currentRun++
			} else {
				if currentRun > maxSensors {
					maxSensors = currentRun
				}
				currentRun = 1
			}
		}
		if currentRun > maxSensors {
			maxSensors = currentRun
		}
	}

	fmt.Println(maxSensors)
}