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 All 16 tests passed can you fix the verifier? package main
import (
"bufio"
"os"
)
var (
seen_gen = make([]int, 3000005)
mapped_val = make([]int, 3000005)
last_pos = make([]int, 1505*1505)
a = make([]int, 1505)
maxC = make([]int, 1505)
newMaxC = make([]int, 1505)
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
buf := make([]byte, 3*1024*1024)
scanner.Buffer(buf, 10*1024*1024)
scanner.Split(bufio.ScanWords)
scanInt := func() int {
scanner.Scan()
res := 0
for _, b := range scanner.Bytes() {
if b >= '0' && b <= '9' {
res = res*10 + int(b-'0')
}
}
return res
}
scanner.Scan()
if err := scanner.Err(); err != nil || len(scanner.Bytes()) == 0 {
return
}
t := 0
for _, b := range scanner.Bytes() {
if b >= '0' && b <= '9' {
t = t*10 + int(b-'0')
}
}
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
gen := 0
for tc := 0; tc < t; tc++ {
l := scanInt()
n := scanInt()
m := scanInt()
gen++
unique_vals := 0
for i := 0; i < l; i++ {
a[i] = scanInt()
if a[i] < len(seen_gen) && seen_gen[a[i]] != gen {
seen_gen[a[i]] = gen
mapped_val[a[i]] = unique_vals
unique_vals++
}
}
for id := 0; id < unique_vals; id++ {
for r := 0; r <= n; r++ {
last_pos[id*(n+1)+r] = 0
}
}
for r := 1; r <= n; r++ {
for c := 1; c <= m; c++ {
x := scanInt()
if x < len(seen_gen) && seen_gen[x] == gen {
id := mapped_val[x]
idx := id*(n+1) + r
if c > last_pos[idx] {
last_pos[idx] = c
}
}
}
}
for r := 0; r <= n+1; r++ {
maxC[r] = 0
}
for k := l - 1; k >= 0; k-- {
v := a[k]
id := mapped_val[v]
for r := 0; r <= n+1; r++ {
newMaxC[r] = 0
}
for r := 1; r <= n; r++ {
c := last_pos[id*(n+1)+r]
if c > 0 {
if c >= maxC[r+1] {
if c > newMaxC[r] {
newMaxC[r] = c
}
}
}
}
for r := n; r >= 1; r-- {
if newMaxC[r+1] > newMaxC[r] {
newMaxC[r] = newMaxC[r+1]
}
}
for r := 1; r <= n+1; r++ {
maxC[r] = newMaxC[r]
}
}
if maxC[1] > 0 {
out.WriteString("T\n")
} else {
out.WriteString("N\n")
}
}
}