123456789101112131415161718192021222324252627282930313233343536373839 |
- package main
- import (
- "fmt"
- )
- const eps float64 = 0.0001
- func main() {
- var N, M int
- fmt.Scan(&N, &M)
- L := make([]int, N)
- max := 0
- for i := range L {
- fmt.Scan(&L[i])
- if max < L[i] {
- max = L[i]
- }
- }
- beg, end := 0.0, float64(max)
- for eps < end-beg { // Loop for 100 (or so) times is also valid.
- mid := (beg + end) / 2.0
- if solve(L, M, mid) {
- beg = mid
- } else {
- end = mid
- }
- }
- fmt.Printf("%.2f", beg)
- }
- func solve(L []int, M int, l float64) bool {
- cnt := 0
- for i := range L {
- length := float64(L[i])
- cnt += int(length / l)
- }
- return M <= cnt
- }
|