結果

問題 No.67 よくある棒を切る問題 (1)
ユーザー te-sh
提出日時 2017-01-23 14:48:16
言語 D
(dmd 2.109.1)
結果
AC  
実行時間 620 ms / 5,000 ms
コード長 594 bytes
コンパイル時間 2,606 ms
コンパイル使用メモリ 146,132 KB
実行使用メモリ 16,532 KB
最終ジャッジ日時 2025-03-03 10:39:52
合計ジャッジ時間 11,093 ms
ジャッジサーバーID
(参考情報)
judge3 / judge1
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
other AC * 30
権限があれば一括ダウンロードができます

ソースコード

diff #

import std.algorithm, std.conv, std.range, std.stdio, std.string;
import std.math;      // math functions

const real eps = 1e-10;

void main()
{
  auto n = readln.chomp.to!size_t;
  auto li = readln.split.to!(real[]);
  auto k = readln.chomp.to!size_t;

  li.sort!"a > b";

  bool canCreate(real a, real _) {
    auto i = size_t(0);
    foreach (l; li) {
      if (l < a) break;
      i += (l / a).floor.to!size_t;
      if (i >= k) return true;
    }
    return false;
  }
  
  auto r = iota(eps, li[0] + eps, eps).assumeSorted!canCreate.lowerBound(0.to!real);
  writefln("%.10f", r.back);
}
0