← Home
For problem statement at 0-999/0-99/90-99/98/problemC.txt this is a correct solution, but verifier at 0-999/0-99/90-99/98/verifierC.go ends with case 8 failed: expected 1953.00000000 got 1904.779443941
input:1953.000000 2514.000000 2410.000000
exit status 1 can you fix the verifier? package main

import (
	"fmt"
	"math"
)

func main() {
	var a, b, l float64
	if _, err := fmt.Scan(&a, &b, &l); err != nil {
		return
	}

	f := func(theta float64) float64 {
		return a*math.Sin(theta) + b*math.Cos(theta) - l*math.Sin(theta)*math.Cos(theta)
	}

	intervals := 10000
	minW := l

	for i := 0; i < intervals; i++ {
		left := (math.Pi / 2) * float64(i) / float64(intervals)
		right := (math.Pi / 2) * float64(i+1) / float64(intervals)

		for j := 0; j < 80; j++ {
			m1 := left + (right-left)/3.0
			m2 := right - (right-left)/3.0
			if f(m1) < f(m2) {
				right = m2
			} else {
				left = m1
			}
		}
		if f(left) < minW {
			minW = f(left)
		}
	}

	if minW > 1e-8 {
		fmt.Printf("%.9f\n", minW)
	} else {
		fmt.Println("My poor head =(")
	}
}