結果

問題 No.67 よくある棒を切る問題 (1)
ユーザー yasunori
提出日時 2025-02-20 08:56:53
言語 C++23
(gcc 13.3.0 + boost 1.87.0)
結果
AC  
実行時間 147 ms / 5,000 ms
コード長 876 bytes
コンパイル時間 3,946 ms
コンパイル使用メモリ 278,716 KB
実行使用メモリ 6,824 KB
最終ジャッジ日時 2025-03-03 12:18:29
合計ジャッジ時間 8,150 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>
// #include <boost/multiprecision/cpp_int.hpp>
using namespace std;
// using bigint = boost::multiprecision::cpp_int;

template <typename T> using min_priority_queue = priority_queue<T,vector<T>,greater<T>>;

random_device seed_gen;
mt19937 engine(seed_gen());

int64_t get_time_ns(){
    struct::timespec t;
    clock_gettime(CLOCK_MONOTONIC, &t);
    return t.tv_sec * int64_t(1'000'000'000) + t.tv_nsec;
}

int main() {
    int n; cin >> n;
    vector<int64_t> L(n);
    for(int64_t &l : L) cin >> l;
    int64_t k; cin >> k;

    double ok = 1e-10;
    double ng = 1e15;
    while((ng - ok) / ok > 1e-9) {
        double mid = sqrt(ok * ng);
        int64_t cnt = 0;
        for(int64_t l : L) cnt += floor(l / mid);
        if(cnt >= k) ok = mid;
        else ng = mid;
    }

    cout << fixed << setprecision(20) << ok << endl;
    return 0;
}
0