For problem statement at 0-999/600-699/600-609/600/problemD.txt this is a correct solution, but verifier at 0-999/600-699/600-609/600/verifierD.go ends with reference runtime error on test 1: exec: "ref600D.bin": executable file not found in $PATH
Input used:
0 0 1 0 0 1
exit status 1 can you fix the verifier? package main
import (
"bufio"
"fmt"
"math"
"os"
)
func main() {
in := bufio.NewReader(os.Stdin)
out := bufio.NewWriter(os.Stdout)
defer out.Flush()
var x1, y1, r1, x2, y2, r2 float64
if _, err := fmt.Fscan(in, &x1, &y1, &r1); err != nil {
return
}
if _, err := fmt.Fscan(in, &x2, &y2, &r2); err != nil {
return
}
dx := x1 - x2
dy := y1 - y2
d := math.Hypot(dx, dy)
sum := r1 + r2
diff := math.Abs(r1 - r2)
var area float64
if d >= sum {
area = 0
} else if d <= diff || d == 0 {
minr := r1
if r2 < minr {
minr = r2
}
area = math.Pi * minr * minr
} else {
c1 := (d*d + r1*r1 - r2*r2) / (2 * d * r1)
if c1 < -1 {
c1 = -1
} else if c1 > 1 {
c1 = 1
}
c2 := (d*d + r2*r2 - r1*r1) / (2 * d * r2)
if c2 < -1 {
c2 = -1
} else if c2 > 1 {
c2 = 1
}
term := (r1 + r2 - d) * (d + r1 - r2) * (d - r1 + r2) * (d + r1 + r2)
if term < 0 {
term = 0
}
area = r1*r1*math.Acos(c1) + r2*r2*math.Acos(c2) - 0.5*math.Sqrt(term)
}
fmt.Fprintf(out, "%.12f\n", area)
}