結果

問題 No.67 よくある棒を切る問題 (1)
ユーザー wdkkouwdkkou
提出日時 2019-04-05 23:47:20
言語 Java21
(openjdk 21)
結果
WA  
実行時間 -
コード長 1,299 bytes
コンパイル時間 3,500 ms
コンパイル使用メモリ 73,812 KB
実行使用メモリ 68,708 KB
最終ジャッジ日時 2023-09-05 05:51:43
合計ジャッジ時間 59,081 ms
ジャッジサーバーID
(参考情報)
judge14 / judge15
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 2,043 ms
65,544 KB
testcase_01 WA -
testcase_02 WA -
testcase_03 WA -
testcase_04 WA -
testcase_05 WA -
testcase_06 WA -
testcase_07 WA -
testcase_08 WA -
testcase_09 WA -
testcase_10 WA -
testcase_11 WA -
testcase_12 WA -
testcase_13 WA -
testcase_14 WA -
testcase_15 WA -
testcase_16 WA -
testcase_17 WA -
testcase_18 WA -
testcase_19 WA -
testcase_20 WA -
testcase_21 WA -
testcase_22 WA -
testcase_23 WA -
testcase_24 AC 141 ms
56,436 KB
testcase_25 WA -
testcase_26 WA -
testcase_27 WA -
testcase_28 WA -
testcase_29 WA -
testcase_30 WA -
権限があれば一括ダウンロードができます

ソースコード

diff #

import java.util.*;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        float[] l = new float[n];
        float max = 0;
        for (int i = 0; i < n; i++) {
            l[i] = sc.nextFloat();
            max = Math.max(max, l[i]);
        }
        long k = sc.nextLong();
        float ans = binSearch(0, max + 1, k, l, n);
        // System.out.println(Arrays.toString(l));
        // System.out.println(ans);
        System.out.printf("%.9f%n", ans);
    }
    public static float binSearch(float ok, float ng, long k, float[] l, int n) {
        for (int i = 0; i < 100; i++) {
            float mid = (ok + ng) / (float) 2;
            // System.out.printf("ok = %f%n", ok);
            // System.out.printf("ng = %f%n", ng);
            // System.out.printf("mid = %f%n", mid);
            if (solve(mid, k, l, n)) {
                ok = mid;
            } else {
                ng = mid;
            }
        }
        return ok;
    }
    public static boolean solve(float x, long k, float[] l, int n) {
        long cnt = 0;
        for (int i = 0; i < n; i++) {
            cnt += l[i] / x;
        }
        if (cnt < k) {
            return false;
        }
        return true;
    }
}
0