← Home
For problem statement at 0-999/400-499/440-449/444/problemB.txt this is a correct solution, but verifier at 0-999/400-499/440-449/444/verifierB.go ends with case 1 failed: pos 1 expected 0 got 2
input:
3 2 492795957
exit status 1 can you fix the verifier? ```go
package main

import (
	"bufio"
	"fmt"
	"os"
	"strconv"
)

func main() {
	reader := bufio.NewReader(os.Stdin)
	var n, d int
	var x int64
	fmt.Fscan(reader, &n, &d, &x)

	a := make([]int, n)
	b := make([]int, n)

	for i := 0; i < n; i++ {
		a[i] = i + 1
	}

	for i := 0; i < n; i++ {
		x = (x*37 + 10007) % 1000000007
		j := int(x % int64(i+1))
		a[i], a[j] = a[j], a[i]
	}

	for i := 0; i < n; i++ {
		if i < d {
			b[i] = 1
		} else {
			b[i] = 0
		}
	}

	for i := 0; i < n; i++ {
		x = (x*37 + 10007) % 1000000007
		j := int(x % int64(i+1))
		b[i], b[j] = b[j], b[i]
	}

	pos := make([]int, n+1)
	for i := 0; i < n; i++ {
		pos[a[i]] = i
	}

	writer := bufio.NewWriter(os.Stdout)
	defer writer.Flush()

	if d < 400 {
		ones := make([]int, 0, d)
		for i := 0; i < n; i++ {
			if b[i] == 1 {
				ones = append(ones, i)
			}
		}

		for i := 0; i < n; i++ {
			if len(ones) == 0 || i < ones[0] {
				writer.WriteString("-1\n")
				continue
			}
			maxVal := 0
			for _, p := range ones {
				if p > i {
					break
				}
				if a[i-p] > maxVal {
					maxVal = a[i-p]
				}
			}
			writer.WriteString(strconv.Itoa(maxVal-1) + "\n")
		}
	} else {
		firstOne := -1
		for j := 0; j < n; j++ {
			if b[j] == 1 {
				firstOne = j
				break
			}
		}

		for i := 0; i < n; i++ {
			if firstOne == -1 || i < firstOne {
				writer.WriteString("-1\n")
				continue
			}
			maxVal := 0
			for v := n; v >= 1; v-- {
				p := pos[v]
				if p <= i && b[i-p] == 1 {
					maxVal = v
					break
				}
			}
			writer.WriteString(strconv.Itoa(maxVal-1) + "\n")
		}
	}
}
```