← Home
For problem statement at 1000-1999/1300-1399/1380-1389/1381/problemB.txt this is a correct solution, but verifier at 1000-1999/1300-1399/1380-1389/1381/verifierB.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 i := 0; i < t; i++ {
		var n int
		fmt.Fscan(reader, &n)
		p := make([]int, 2*n)
		for j := 0; j < 2*n; j++ {
			fmt.Fscan(reader, &p[j])
		}

		var blocks []int
		maxVal := 0
		currLen := 0
		for j := 0; j < 2*n; j++ {
			if p[j] > maxVal {
				if currLen > 0 {
					blocks = append(blocks, currLen)
				}
				maxVal = p[j]
				currLen = 1
			} else {
				currLen++
			}
		}
		if currLen > 0 {
			blocks = append(blocks, currLen)
		}

		dp := make([]bool, n+1)
		dp[0] = true
		for _, w := range blocks {
			for j := n; j >= w; j-- {
				if dp[j-w] {
					dp[j] = true
				}
			}
		}

		if dp[n] {
			fmt.Fprintln(writer, "YES")
		} else {
			fmt.Fprintln(writer, "NO")
		}
	}
}