For problem statement at 1000-1999/1100-1199/1180-1189/1188/problemC.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1180-1189/1188/verifierC.go ends with case 9 failed: runtime error: exit status 2
panic: runtime error: integer divide by zero
goroutine 1 [running]:
main.main()
/tmp/build-4245511518/solution.go:31 +0x3cc
input:
8 1
1 11 6 87 49 8 50 28
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
"sort"
"strconv"
)
func main() {
scanner := bufio.NewScanner(os.Stdin)
scanner.Split(bufio.ScanWords)
if !scanner.Scan() {
return
}
n, _ := strconv.Atoi(scanner.Text())
scanner.Scan()
k, _ := strconv.Atoi(scanner.Text())
a := make([]int, n)
for i := 0; i < n; i++ {
scanner.Scan()
a[i], _ = strconv.Atoi(scanner.Text())
}
sort.Ints(a)
MOD := 998244353
MaxV := (a[n-1] - a[0]) / (k - 1)
ans := 0
dp := make([]int, n)
new_dp := make([]int, n)
for v := 1; v <= MaxV; v++ {
for i := 0; i < n; i++ {
dp[i] = 1
}
for j := 2; j <= k; j++ {
sum := 0
p := 0
allZero := true
for i := 0; i < n; i++ {
for p < i && a[i]-a[p] >= v {
sum += dp[p]
if sum >= MOD {
sum -= MOD
}
p++
}
new_dp[i] = sum
if sum > 0 {
allZero = false
}
}
for i := 0; i < n; i++ {
dp[i] = new_dp[i]
}
if allZero {
break
}
}
for i := 0; i < n; i++ {
ans += dp[i]
if ans >= MOD {
ans -= MOD
}
}
}
fmt.Println(ans)
}