← Home
For problem statement at 0-999/900-999/990-999/990/problemE.txt this is a correct solution, but verifier at 0-999/900-999/990-999/990/verifierE.go ends with all tests passed can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
)

func main() {
	in := bufio.NewReader(os.Stdin)
	var n, m, k int
	fmt.Fscan(in, &n, &m, &k)
	blocked := make([]int, m)
	for i := 0; i < m; i++ {
		fmt.Fscan(in, &blocked[i])
	}
	a := make([]int, k)
	for i := 0; i < k; i++ {
		fmt.Fscan(in, &a[i])
	}
	allowed := make([]int, 0, n-m)
	j := 0
	for i := 0; i < n; i++ {
		if j < m && blocked[j] == i {
			j++
		} else {
			allowed = append(allowed, i)
		}
	}
	minCost := int64(-1)
	for l := 1; l <= k; l++ {
		curEnd := 0
		cnt := 0
		possible := true
		for curEnd < n {
			maxL := max(0, curEnd-l+1)
			upper := min(n-1, curEnd)
			if maxL > upper {
				possible = false
				break
			}
			idx := sort.Search(len(allowed), func(i int) bool { return allowed[i] > upper }) - 1
			if idx < 0 || allowed[idx] < maxL {
				possible = false
				break
			}
			pmax := allowed[idx]
			cnt++
			curEnd = pmax + l
		}
		if possible && curEnd >= n {
			cost := int64(cnt) * int64(a[l-1])
			if minCost == -1 || cost < minCost {
				minCost = cost
			}
		}
	}
	fmt.Println(minCost)
}

func max(a, b int) int {
	if a > b {
		return a
	}
	return b
}

func min(a, b int) int {
	if a < b {
		return a
	}
	return b
}
```