← Home
For problem statement at 2000-2999/2100-2199/2160-2169/2160/problemB.txt this is a correct solution, but verifier at 2000-2999/2100-2199/2160-2169/2160/verifierB.go ends with Input:
1
1
5

candidate runtime error on test 1: runtime error: exit status 2
panic: runtime error: index out of range [-4]

goroutine 1 [running]:
main.main()
	/tmp/build-3018004612/solution.go:47 +0x4f8

exit status 1 can you fix the verifier? package main

import (
	"io"
	"os"
	"strconv"
)

func main() {
	data, _ := io.ReadAll(os.Stdin)
	idx := 0

	nextInt64 := func() int64 {
		for idx < len(data) && (data[idx] < '0' || data[idx] > '9') && data[idx] != '-' {
			idx++
		}
		sign := int64(1)
		if data[idx] == '-' {
			sign = -1
			idx++
		}
		var v int64
		for idx < len(data) && data[idx] >= '0' && data[idx] <= '9' {
			v = v*10 + int64(data[idx]-'0')
			idx++
		}
		return v * sign
	}

	t := int(nextInt64())
	out := make([]byte, 0, 1<<20)

	for ; t > 0; t-- {
		n := int(nextInt64())
		a := make([]int, n+1)
		var prev int64
		label := 1

		for i := 1; i <= n; i++ {
			bi := nextInt64()
			d := bi - prev
			p := i - int(d)
			if p == 0 {
				a[i] = label
				label++
			} else {
				a[i] = a[p]
			}
			prev = bi
		}

		for i := 1; i <= n; i++ {
			out = strconv.AppendInt(out, int64(a[i]), 10)
			if i == n {
				out = append(out, '\n')
			} else {
				out = append(out, ' ')
			}
		}
	}

	os.Stdout.Write(out)
}