← Home
For problem statement at 0-999/700-799/760-769/769/problemB.txt this is a correct solution, but verifier at 0-999/700-799/760-769/769/verifierB.go ends with case 2 failed:
expected:
8
1 2
1 5
1 7
2 8
2 3
2 4
5 6
5 9

got:
7
1 2
1 3
1 4
2 5
2 6
2 7
3 8

exit status 1 can you fix the verifier? ```go
package main

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

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

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

	a := make([]int, n)
	for i := 0; i < n; i++ {
		fmt.Fscan(in, &a[i])
	}

	if a[0] == 0 && n > 1 {
		fmt.Fprintln(out, -1)
		return
	}

	type pair struct {
		f, t int
	}
	var res []pair

	rem := make([]int, n)
	copy(rem, a)

	queue := make([]int, 0)
	if rem[0] > 0 {
		queue = append(queue, 1)
	}

	next := 2
	for next <= n {
		if len(queue) == 0 {
			fmt.Fprintln(out, -1)
			return
		}

		sender := queue[0]
		if rem[sender-1] == 0 {
			queue = queue[1:]
			continue
		}

		receiver := next
		res = append(res, pair{sender, receiver})
		rem[sender-1]--

		if rem[receiver-1] > 0 {
			queue = append(queue, receiver)
		}

		next++

		if rem[sender-1] == 0 {
			queue = queue[1:]
		}
	}

	fmt.Fprintln(out, len(res))
	for _, p := range res {
		fmt.Fprintln(out, p.f, p.t)
	}
}
```