For problem statement at 0-999/0-99/50-59/51/problemC.txt this is a correct solution, but verifier at 0-999/0-99/50-59/51/verifierC.go ends with case 31 failed: expected 0.000000
287.000000 687.000000 846.000000 got 0.000001
287.000001 687.000001 846.000001
input:
3
846 687 287
exit status 1 can you fix the verifier? ```go
package main
import (
"bufio"
"fmt"
"math"
"os"
"sort"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var n int
if _, err := fmt.Fscan(in, &n); err != nil {
return
}
xs := make([]int64, n)
for i := 0; i < n; i++ {
fmt.Fscan(in, &xs[i])
}
sort.Slice(xs, func(i, j int) bool { return xs[i] < xs[j] })
eps := 1e-9
needSeg := func(d float64) int {
i := 0
used := 0
for i < n {
used++
limit := float64(xs[i]) + 2*d + eps
j := i
for j < n && float64(xs[j]) <= limit {
j++
}
i = j
}
return used
}
low, high := 0.0, 1e9
for it := 0; it < 70; it++ {
mid := (low + high) / 2
if needSeg(mid) <= 3 {
high = mid
} else {
low = mid
}
}
// Round d up to 6 decimals to ensure feasibility with printed value
dOut := math.Ceil(high*1e6-1e-12) / 1e6
centers := func(d float64) []float64 {
i := 0
cs := make([]float64, 0, 3)
for i < n && len(cs) < 3 {
start := float64(xs[i])
center := start + d
limit := start + 2*d + eps
for i < n && float64(xs[i]) <= limit {
i++
}
cs = append(cs, center)
}
for len(cs) < 3 {
cs = append(cs, cs[0])
}
return cs[:3]
}(dOut)
fmt.Fprintf(out, "%.6f\n", dOut)
fmt.Fprintf(out, "%.6f %.6f %.6f\n", centers[0], centers[1], centers[2])
}
```