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