lc-go/solutions/29/q2975/solution.go
2026-01-17 12:51:40 +09:00

50 lines
868 B
Go

package q2975
import "slices"
func maximizeSquareArea(m int, n int, hFences []int, vFences []int) int {
slices.Sort(hFences)
slices.Sort(vFences)
nHFences := len(hFences) + 2
lengths := make(map[int]struct{}, nHFences*(nHFences-1)/2)
for i := -1; i < len(hFences); i++ {
a := 1
if i >= 0 {
a = hFences[i]
}
for j := i + 1; j <= len(hFences); j++ {
b := m
if j < len(hFences) {
b = hFences[j]
}
lengths[b-a] = struct{}{}
}
}
maxEdge := -1
for i := -1; i < len(vFences); i++ {
a := 1
if i >= 0 {
a = vFences[i]
}
for j := i + 1; j <= len(vFences); j++ {
b := n
if j < len(vFences) {
b = vFences[j]
}
if _, ok := lengths[b-a]; ok {
maxEdge = max(maxEdge, b-a)
}
}
}
if maxEdge == -1 {
return -1
}
maxEdge %= 1e9 + 7
return (maxEdge * maxEdge) % (1e9 + 7)
}
var _ = maximizeSquareArea