For problem statement at 0-999/500-599/530-539/538/problemF.txt this is a correct solution, but verifier at 0-999/500-599/530-539/538/verifierF.go ends with All 50 tests passed. can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
)
type Element struct {
val int
idx int
}
func nextInt(r *bufio.Reader) int {
var n int
var sign int = 1
var c byte
for {
c, _ = r.ReadByte()
if c == '-' || (c >= '0' && c <= '9') {
break
}
}
if c == '-' {
sign = -1
} else {
n = int(c - '0')
}
for {
c, _ = r.ReadByte()
if c < '0' || c > '9' {
break
}
n = n*10 + int(c - '0')
}
return n * sign
}
func main() {
reader := bufio.NewReader(os.Stdin)
n := nextInt(reader)
elements := make([]Element, n)
for i := 0; i < n; i++ {
elements[i].val = nextInt(reader)
elements[i].idx = i + 1
}
sort.Slice(elements, func(i, j int) bool {
return elements[i].val < elements[j].val
})
bit := make([]int, n+1)
add := func(idx int, val int) {
for ; idx <= n; idx += idx & -idx {
bit[idx] += val
}
}
query := func(idx int) int {
sum := 0
for ; idx > 0; idx -= idx & -idx {
sum += bit[idx]
}
return sum
}
ans := make([]int, n)
for i := 0; i < n; {
j := i
for j < n && elements[j].val == elements[i].val {
j++
}
for k := i; k < j; k++ {
v := elements[k].idx
if v == 1 {
for kAry := 1; kAry < n; kAry++ {
L := 2
R := kAry + 1
if R > n {
R = n
}
ans[kAry] += query(R) - query(L-1)
}
} else {
maxK := (n - 2) / (v - 1)
for kAry := 1; kAry <= maxK; kAry++ {
L := kAry*(v-1) + 2
R := kAry*v + 1
if R > n {
R = n
}
ans[kAry] += query(R) - query(L-1)
}
}
}
for k := i; k < j; k++ {
add(elements[k].idx, 1)
}
i = j
}
writer := bufio.NewWriter(os.Stdout)
for i := 1; i < n; i++ {
if i > 1 {
writer.WriteByte(' ')
}
fmt.Fprint(writer, ans[i])
}
writer.WriteByte('\n')
writer.Flush()
}