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