結果
| 問題 |
No.67 よくある棒を切る問題 (1)
|
| コンテスト | |
| ユーザー |
bal4u
|
| 提出日時 | 2019-09-07 14:20:48 |
| 言語 | C (gcc 13.3.0) |
| 結果 |
AC
|
| 実行時間 | 22 ms / 5,000 ms |
| コード長 | 858 bytes |
| コンパイル時間 | 183 ms |
| コンパイル使用メモリ | 25,856 KB |
| 実行使用メモリ | 8,608 KB |
| 最終ジャッジ日時 | 2025-03-03 11:26:36 |
| 合計ジャッジ時間 | 2,038 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge2 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
ソースコード
// yukicoder: No.67 よくある棒を切る問題 (1)
// bal4u 2019.9.7
#include <stdio.h>
#include <stdlib.h>
typedef long long ll;
//// 高速入力
#if 1
int getchar_unlocked(void);
#define gc() getchar_unlocked()
#else
#define gc() getchar()
#endif
int in() { // 非負整数の入力
int n = 0, c = gc();
do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0');
return n;
}
ll inLL() {
ll n = 0; int c = gc();
do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0');
return n;
}
int L[200005];
int main()
{
int i, loop, N; ll K, s; double l, r, m;
N = in();
s = 0; for (i = 0; i < N; i++) L[i] = in(), s += L[i];
K = inLL();
l = 0; r = (double)s/K+1;
loop = 50; while (loop--) {
m = (l + r) / 2.0;
s = 0; for (i = 0; i < N; i++) s += (ll)((L[i])/m);
if (s < K) r = m; else l = m;
}
printf("%.12lf\n", m);
return 0;
}
bal4u