結果
| 問題 |
No.67 よくある棒を切る問題 (1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2019-03-15 02:12:01 |
| 言語 | Go (1.23.4) |
| 結果 |
WA
|
| 実行時間 | - |
| コード長 | 1,230 bytes |
| コンパイル時間 | 16,011 ms |
| コンパイル使用メモリ | 247,488 KB |
| 実行使用メモリ | 10,156 KB |
| 最終ジャッジ日時 | 2025-03-03 11:23:31 |
| 合計ジャッジ時間 | 56,940 ms |
|
ジャッジサーバーID (参考情報) |
judge4 / judge3 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 28 WA * 2 |
ソースコード
package main
import (
"bufio"
"fmt"
"os"
)
var sc = bufio.NewScanner(os.Stdin)
// 任意の要素数の文字列を読み込んでスライスで返す
func scanStrings(len int) (strings []string) {
var str string
for i := 0; i < len; i++ {
fmt.Scanf("%s", &str)
strings = append(strings, str)
}
return
}
// 任意の要素数の配列を読み込んでスライスで返す
func scanNums(len int) (nums []int) {
var num int
for i := 0; i < len; i++ {
fmt.Scan(&num)
nums = append(nums, num)
}
return
}
func reverse(s string) string {
runes := []rune(s)
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
runes[i], runes[j] = runes[j], runes[i]
}
return string(runes)
}
func flag(mid float64, k int, ll []int) bool {
sum := 0
for _, v := range ll {
sum += int(float64(v) / mid)
}
// fmt.Println("sum:", sum)
if sum >= k {
return true
}
return false
}
func main() {
n := scanNums(1)[0]
ll := scanNums(n)
k := scanNums(1)[0]
l := 0.0
r := 1e10 + 1
for i := 0; i < 100 && r-l > 1e-10; i++ {
mid := (r + l) / 2.0
if flag(mid, k, ll) {
l = mid
// fmt.Println("true mid:", mid)
} else {
r = mid
}
}
// fmt.Println("n,l,k,ll", n, l, k, ll)
fmt.Printf("%f\n", l)
}