← Home
```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)
	}
}
```