← Home
For problem statement at 1000-1999/1900-1999/1900-1909/1903/problemE.txt this is a correct solution, but verifier at 1000-1999/1900-1999/1900-1909/1903/verifierE.go ends with candidate does not match reference stub
exit status 1 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 t int
	if _, err := fmt.Fscan(reader, &t); err != nil {
		return
	}

	for test := 0; test < t; test++ {
		var n int
		fmt.Fscan(reader, &n)

		var sx, sy int
		fmt.Fscan(reader, &sx, &sy)
		c0 := (sx + sy) % 2

		S0 := make([]int, 0)
		S1 := make([]int, 0)

		for i := 1; i <= n; i++ {
			var x, y int
			fmt.Fscan(reader, &x, &y)
			if (x+y)%2 == c0 {
				S0 = append(S0, i)
			} else {
				S1 = append(S1, i)
			}
		}

		var playFirst bool
		if len(S1) <= n/2 {
			playFirst = true
			fmt.Fprintln(writer, "First")
		} else {
			playFirst = false
			fmt.Fprintln(writer, "Second")
		}
		writer.Flush()

		used := make([]bool, n+1)
		p0, p1 := 0, 0

		for turn := 1; turn <= n; turn++ {
			myTurn := (turn%2 == 1) == playFirst
			if myTurn {
				var pick int
				if playFirst {
					for p1 < len(S1) && used[S1[p1]] {
						p1++
					}
					if p1 < len(S1) {
						pick = S1[p1]
						p1++
					} else {
						for p0 < len(S0) && used[S0[p0]] {
							p0++
						}
						pick = S0[p0]
						p0++
					}
				} else {
					for p0 < len(S0) && used[S0[p0]] {
						p0++
					}
					if p0 < len(S0) {
						pick = S0[p0]
						p0++
					} else {
						for p1 < len(S1) && used[S1[p1]] {
							p1++
						}
						pick = S1[p1]
						p1++
					}
				}
				used[pick] = true
				fmt.Fprintln(writer, pick)
				writer.Flush()
			} else {
				var opp int
				fmt.Fscan(reader, &opp)
				used[opp] = true
			}
		}
	}
}