← Home
For problem statement at 1000-1999/1600-1699/1670-1679/1672/problemD.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1670-1679/1672/verifierD.go ends with All tests passed 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 tc := 0; tc < t; tc++ {
		var n int
		fmt.Fscan(reader, &n)

		a := make([]int, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(reader, &a[i])
		}

		b := make([]int, n)
		for i := 0; i < n; i++ {
			fmt.Fscan(reader, &b[i])
		}

		seen := make([]int, n+1)
		matched := make([]int, n+1)

		j := -1
		possible := true

		for i := 0; i < n; i++ {
			req := b[i]
			if j >= 0 && j < n && a[j] == req && seen[req] > matched[req] {
				matched[req]++
			} else {
				found := false
				for j+1 < n {
					j++
					seen[a[j]]++
					if a[j] == req {
						matched[req]++
						found = true
						break
					}
				}
				if !found {
					possible = false
					break
				}
			}
		}

		if possible {
			fmt.Fprintln(writer, "YES")
		} else {
			fmt.Fprintln(writer, "NO")
		}
	}
}