← Home
For problem statement at 0-999/900-999/990-999/990/problemD.txt this is a correct solution, but verifier at 0-999/900-999/990-999/990/verifierD.go ends with Test 18 failed
Input:5 1 2
Expected:YES
00001
00111
01011
01101
11110
Got:YES
00111
00011
10001
11001
11110


exit status 1 can you fix the verifier? package main

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

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

	var n, a, b int
	if _, err := fmt.Fscan(in, &n, &a, &b); err != nil {
		return
	}

	if a > 1 && b > 1 {
		fmt.Fprintln(out, "NO")
		return
	}

	if a == 1 && b == 1 {
		if n == 2 || n == 3 {
			fmt.Fprintln(out, "NO")
			return
		}
		fmt.Fprintln(out, "YES")
		adj := make([][]byte, n)
		for i := range adj {
			adj[i] = make([]byte, n)
			for j := range adj[i] {
				adj[i][j] = '0'
			}
		}
		for i := 0; i < n-1; i++ {
			adj[i][i+1] = '1'
			adj[i+1][i] = '1'
		}
		for i := 0; i < n; i++ {
			fmt.Fprintf(out, "%s\n", adj[i])
		}
		return
	}

	fmt.Fprintln(out, "YES")
	adj := make([][]byte, n)
	for i := range adj {
		adj[i] = make([]byte, n)
		for j := range adj[i] {
			adj[i][j] = '0'
		}
	}

	if b == 1 {
		for i := 0; i < n-a; i++ {
			adj[i][i+1] = '1'
			adj[i+1][i] = '1'
		}
	} else {
		for i := 0; i < n; i++ {
			for j := 0; j < n; j++ {
				if i != j {
					adj[i][j] = '1'
				}
			}
		}
		for i := 0; i < n-b; i++ {
			adj[i][i+1] = '0'
			adj[i+1][i] = '0'
		}
	}

	for i := 0; i < n; i++ {
		fmt.Fprintf(out, "%s\n", adj[i])
	}
}