← Home
For problem statement at 0-999/900-999/900-909/909/problemF.txt this is a correct solution, but verifier at 0-999/900-999/900-909/909/verifierF.go ends with All 100 tests passed can you fix the verifier? package main

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

func solveP(n int) ([]int, bool) {
	if n%2 == 1 {
		return nil, false
	}
	p := make([]int, n+1)
	cur := n
	for cur > 0 {
		b := 1
		for b<<1 <= cur {
			b <<= 1
		}
		m := 2*b - 1
		for x := b; x <= cur; x++ {
			y := m - x
			p[x] = y
			p[y] = x
		}
		cur = m - cur - 1
	}
	return p, true
}

func solveQ(n int) ([]int, bool) {
	if n < 6 || (n&(n-1)) == 0 {
		return nil, false
	}
	q := make([]int, n+1)
	if n == 6 {
		base := []int{0, 5, 3, 2, 6, 1, 4}
		copy(q, base)
		return q, true
	}
	base := []int{0, 5, 3, 2, 6, 7, 4, 1}
	copy(q, base)
	for l := 8; l <= n; l <<= 1 {
		r := 2*l - 1
		if r > n {
			r = n
		}
		for i := l; i < r; i++ {
			q[i] = i + 1
		}
		q[r] = l
	}
	return q, true
}

func printAnswer(out *bufio.Writer, ok bool, a []int, n int) {
	if !ok {
		fmt.Fprintln(out, "NO")
		return
	}
	fmt.Fprintln(out, "YES")
	for i := 1; i <= n; i++ {
		if i > 1 {
			fmt.Fprint(out, " ")
		}
		fmt.Fprint(out, a[i])
	}
	fmt.Fprintln(out)
}

func main() {
	in := bufio.NewReader(os.Stdin)
	out := bufio.NewWriter(os.Stdout)
	defer out.Flush()

	var n int
	fmt.Fscan(in, &n)

	p, ok1 := solveP(n)
	printAnswer(out, ok1, p, n)

	q, ok2 := solveQ(n)
	printAnswer(out, ok2, q, n)
}