結果
| 問題 |
No.67 よくある棒を切る問題 (1)
|
| コンテスト | |
| ユーザー |
|
| 提出日時 | 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 |
ソースコード
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);
}