← Home
For problem statement at 1000-1999/1800-1899/1820-1829/1829/problemE.txt this is a correct solution, but verifier at 1000-1999/1800-1899/1820-1829/1829/verifierE.go ends with All tests passed! can you fix the verifier? package main

import (
	"io"
	"os"
	"strconv"
)

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

	nextInt := func() int {
		for p < len(data) && (data[p] < '0' || data[p] > '9') {
			p++
		}
		x := 0
		for p < len(data) && data[p] >= '0' && data[p] <= '9' {
			x = x*10 + int(data[p]-'0')
			p++
		}
		return x
	}

	t := nextInt()
	out := make([]byte, 0, t*12)

	for ; t > 0; t-- {
		n := nextInt()
		m := nextInt()
		total := n * m

		grid := make([]int, total)
		for i := 0; i < total; i++ {
			grid[i] = nextInt()
		}

		stack := make([]int, 0, total)
		var best int64

		for i := 0; i < total; i++ {
			if grid[i] == 0 {
				continue
			}

			var sum int64
			stack = append(stack[:0], i)
			sum += int64(grid[i])
			grid[i] = 0

			for len(stack) > 0 {
				v := stack[len(stack)-1]
				stack = stack[:len(stack)-1]

				if u := v - m; v >= m && grid[u] > 0 {
					sum += int64(grid[u])
					grid[u] = 0
					stack = append(stack, u)
				}
				if u := v + m; u < total && grid[u] > 0 {
					sum += int64(grid[u])
					grid[u] = 0
					stack = append(stack, u)
				}

				c := v % m
				if c > 0 {
					u := v - 1
					if grid[u] > 0 {
						sum += int64(grid[u])
						grid[u] = 0
						stack = append(stack, u)
					}
				}
				if c+1 < m {
					u := v + 1
					if grid[u] > 0 {
						sum += int64(grid[u])
						grid[u] = 0
						stack = append(stack, u)
					}
				}
			}

			if sum > best {
				best = sum
			}
		}

		out = strconv.AppendInt(out, best, 10)
		out = append(out, '\n')
	}

	_, _ = os.Stdout.Write(out)
}