For problem statement at 1000-1999/1500-1599/1520-1529/1526/problemE.txt this is a correct solution, but verifier at 1000-1999/1500-1599/1520-1529/1526/verifierE.go ends with All 100 tests passed can you fix the verifier? package main
import (
"fmt"
"io"
"os"
)
func power(base, exp int64) int64 {
res := int64(1)
base %= 998244353
for exp > 0 {
if exp%2 == 1 {
res = (res * base) % 998244353
}
base = (base * base) % 998244353
exp /= 2
}
return res
}
func nCr(n, r int) int64 {
if r < 0 || r > n {
return 0
}
if r > n-r {
r = n - r
}
num := int64(1)
den := int64(1)
for i := 0; i < r; i++ {
num = (num * int64(n-i)) % 998244353
den = (den * int64(i+1)) % 998244353
}
return (num * power(den, 998244353-2)) % 998244353
}
func main() {
buf, _ := io.ReadAll(os.Stdin)
var idx int
readInt := func() int {
for idx < len(buf) && (buf[idx] < '0' || buf[idx] > '9') {
idx++
}
if idx >= len(buf) {
return 0
}
res := 0
for idx < len(buf) && buf[idx] >= '0' && buf[idx] <= '9' {
res = res*10 + int(buf[idx]-'0')
idx++
}
return res
}
n := readInt()
k := readInt()
if n == 0 {
return
}
p := make([]int, n)
for i := 0; i < n; i++ {
p[i] = readInt()
}
pos := make([]int, n+1)
for i := 0; i < n; i++ {
pos[p[i]] = i
}
pos[n] = -1
c := 0
for i := 0; i < n-1; i++ {
if pos[p[i]+1] > pos[p[i+1]+1] {
c++
}
}
ans := nCr(k-c+n-1, n)
fmt.Println(ans)
}