For problem statement at 0-999/300-399/320-329/326/problemC.txt this is a correct solution, but verifier at 0-999/300-399/320-329/326/verifierC.go ends with can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Cell struct {
r int
c int
}
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var r, n int
fmt.Fscan(in, &r, &n)
cells := make([]Cell, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &cells[i].r, &cells[i].c)
}
sort.Slice(cells, func(i, j int) bool {
return cells[i].r < cells[j].r
})
var g [101][3][3]int
for length := 1; length <= r; length++ {
for a := 0; a < 3; a++ {
for b := 0; b < 3; b++ {
var seen [256]bool
for i := 1; i <= length; i++ {
for c := 1; c <= 2; c++ {
if i == 1 && a == c {
continue
}
if i == length && b == c {
continue
}
x := g[i-1][a][3-c] ^ g[length-i][3-c][b]
seen[x] = true
}
}
mex := 0
for seen[mex] {
mex++
}
g[length][a][b] = mex
}
}
}
xor := 0
start := 1
leftBlock := 0
for _, cell := range cells {
length := cell.r - start
rightBlock := 3 - cell.c
xor ^= g[length][leftBlock][rightBlock]
start = cell.r + 1
leftBlock = 3 - cell.c
}
length := r - start + 1
xor ^= g[length][leftBlock][0]
if xor != 0 {
fmt.Fprintln(out, "WIN")
} else {
fmt.Fprintln(out, "LOSE")
}
}