← Home
For problem statement at 2000-2999/2000-2099/2000-2009/2005/problemE2.txt this is a correct solution, but verifier at 2000-2999/2000-2099/2000-2009/2005/verifierE2.go ends with test 1 case 2 mismatch: expected N got T
input:
3
2 2 3
1 2
1 3 6
4 6 2
4 2 2
1 2 1 2
1 1
2 2
1 1 1
1
1
reference output:
N
N
T

participant output:
N
T
T

exit status 1 can you fix the verifier? package main

import (
	"io"
	"os"
)

type FastScanner struct {
	data []byte
	idx  int
}

func (fs *FastScanner) nextInt() int {
	for fs.idx < len(fs.data) && (fs.data[fs.idx] < '0' || fs.data[fs.idx] > '9') {
		fs.idx++
	}
	val := 0
	for fs.idx < len(fs.data) && fs.data[fs.idx] >= '0' && fs.data[fs.idx] <= '9' {
		val = val*10 + int(fs.data[fs.idx]-'0')
		fs.idx++
	}
	return val
}

func main() {
	data, _ := io.ReadAll(os.Stdin)
	fs := FastScanner{data: data}

	t := fs.nextInt()
	out := make([]byte, 0, 2*t)

	for ; t > 0; t-- {
		l := fs.nextInt()
		n := fs.nextInt()
		m := fs.nextInt()

		id := make(map[int]int, l*2+1)
		a := make([]int, l)
		uniq := 0

		for i := 0; i < l; i++ {
			v := fs.nextInt()
			z := id[v]
			if z == 0 {
				uniq++
				z = uniq
				id[v] = z
			}
			a[i] = z - 1
		}

		stride := n + 1
		all := make([]int, uniq*stride)

		for i := 1; i <= n; i++ {
			for j := 1; j <= m; j++ {
				v := fs.nextInt()
				if z := id[v]; z != 0 {
					pos := (z-1)*stride + i
					if j > all[pos] {
						all[pos] = j
					}
				}
			}
		}

		gNext := make([]int, n+2)
		gCur := make([]int, n+2)

		for k := l - 1; k >= 0; k-- {
			base := a[k] * stride
			best := 0
			gCur[n+1] = 0
			for i := n; i >= 1; i-- {
				x := all[base+i]
				if x >= gNext[i+1] && x > best {
					best = x
				}
				gCur[i] = best
			}
			gNext, gCur = gCur, gNext
		}

		if gNext[1] > 0 {
			out = append(out, 'T', '\n')
		} else {
			out = append(out, 'N', '\n')
		}
	}

	os.Stdout.Write(out)
}