add new solutions

This commit is contained in:
kanna5 2026-01-05 16:48:03 +09:00
parent 0c73608ce5
commit d798d5e8c9
Signed by: kkyy
GPG key ID: 06332F3965E9B0CF
19 changed files with 661 additions and 4 deletions

View file

@ -0,0 +1,41 @@
package q3453
import (
"math"
"slices"
)
func separateSquares(squares [][]int) float64 {
slices.SortFunc(squares, func(a, b []int) int { return a[1] - b[1] })
var totalArea float64
var maxY int
for i := range squares {
totalArea += math.Pow(float64(squares[i][2]), 2)
maxY = max(maxY, squares[i][1]+squares[i][2])
}
target := totalArea / 2
// Binary search
var l, r float64 = 0, float64(maxY)
for range 64 {
m := (l + r) / 2
var area float64
for i := range squares {
y, l := float64(squares[i][1]), float64(squares[i][2])
if y >= m {
break
}
area += l * min(l, m-y)
}
if area < target {
l = m
} else {
r = m
}
}
return l
}
var _ = separateSquares