For problem statement at 1000-1999/1100-1199/1150-1159/1157/problemD.txt this is a correct solution, but verifier at 1000-1999/1100-1199/1150-1159/1157/verifierD.go ends with OK can you fix the verifier? package main
import (
"bufio"
"fmt"
"os"
)
func main() {
in := bufio.NewReaderSize(os.Stdin, 1<<20)
out := bufio.NewWriterSize(os.Stdout, 1<<20)
defer out.Flush()
var n, kk int64
fmt.Fscan(in, &n, &kk)
k := int(kk)
minSum := kk * (kk + 1) / 2
if n < minSum {
fmt.Fprintln(out, "NO")
return
}
base := kk * (kk - 1) / 2
x := (n - base) / kk
sumMax := int64(0)
cur := x
for i := 0; i < k && sumMax < n; i++ {
sumMax += cur
if cur < n {
cur *= 2
if cur > n {
cur = n
}
}
}
if sumMax < n {
fmt.Fprintln(out, "NO")
return
}
ans := make([]int64, k)
ans[0] = x
used := x
for i := 1; i < k; i++ {
t := int64(k - i)
remain := n - used
upper := (remain - t*(t-1)/2) / t
y := ans[i-1] * 2
if y > upper {
y = upper
}
if y <= ans[i-1] {
fmt.Fprintln(out, "NO")
return
}
ans[i] = y
used += y
}
if used != n {
fmt.Fprintln(out, "NO")
return
}
fmt.Fprintln(out, "YES")
for i, v := range ans {
if i > 0 {
fmt.Fprint(out, " ")
}
fmt.Fprint(out, v)
}
fmt.Fprintln(out)
}