← Home
For problem statement at 1000-1999/1600-1699/1670-1679/1676/problemH2.txt this is a correct solution, but verifier at 1000-1999/1600-1699/1670-1679/1676/verifierH2.go ends with case 1 failed: runtime error: exit status 2
panic: runtime error: index out of range [137] with length 131

goroutine 1 [running]:
main.(*BIT).Sum(...)
	/tmp/build-3584430475/solution.go:28
main.main()
	/tmp/build-3584430475/solution.go:71 +0x270

input:
1
129
138 19 32 749 204 927 664 14 909 332 645 281 53 527 281 884 380 256 932 113 993 773 328 728 445 695 439 603 630 281 547 60 66 834 184 175 611 380 739 913 378 105 229 447 827 530 467 349 498 963 923 993 356 347 686 550 813 138 29 576 92 487 209 893 597 486 219 76 310 215 648 730 56 528 318 766 172 980 600 10 270 517 541 711 643 523 243 498 79 270 713 529 963 972 782 844 912 313 442 134 708 587 169 296 768 75 859 582 183 857 724 589 524 63 867 980 216 343 606 97 547 403 973 980 555 991 926 74 519
exit status 1 can you fix the verifier? ```go
package main

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

type BIT struct {
	n int
	t []int
}

func NewBIT(n int) *BIT {
	return &BIT{n: n, t: make([]int, n+2)}
}

func (b *BIT) Add(i, delta int) {
	for i <= b.n {
		b.t[i] += delta
		i += i & -i
	}
}

func (b *BIT) Sum(i int) int {
	res := 0
	for i > 0 {
		res += b.t[i]
		i -= i & -i
	}
	return res
}

var rdr = bufio.NewReaderSize(os.Stdin, 1<<20)

func nextInt() int {
	sign := 1
	val := 0
	c, err := rdr.ReadByte()
	for err == nil && (c < '0' || c > '9') && c != '-' {
		c, err = rdr.ReadByte()
	}
	if err != nil {
		return 0
	}
	if c == '-' {
		sign = -1
		c, err = rdr.ReadByte()
	}
	for err == nil && c >= '0' && c <= '9' {
		val = val*10 + int(c-'0')
		c, err = rdr.ReadByte()
	}
	if err == nil {
		_ = rdr.UnreadByte()
	}
	return sign * val
}

func main() {
	out := bufio.NewWriterSize(os.Stdout, 1<<20)
	defer out.Flush()

	t := nextInt()
	for ; t > 0; t-- {
		n := nextInt()
		bit := NewBIT(n)
		var ans int64 = 0
		for i := 0; i < n; i++ {
			x := nextInt()
			ans += int64(bit.Sum(n) - bit.Sum(x-1))
			bit.Add(x, 1)
		}
		fmt.Fprintln(out, ans)
	}
}
```