結果
| 問題 | No.67 よくある棒を切る問題 (1) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-07 04:04:52 |
| 言語 | Rust (1.94.0 + proconio + num + itertools) |
| 結果 |
AC
|
| 実行時間 | 40 ms / 5,000 ms |
| + 505µs | |
| コード長 | 928 bytes |
| 記録 | |
| コンパイル時間 | 9,457 ms |
| コンパイル使用メモリ | 184,720 KB |
| 実行使用メモリ | 6,144 KB |
| 最終ジャッジ日時 | 2026-07-20 09:01:06 |
| 合計ジャッジ時間 | 13,177 ms |
|
ジャッジサーバーID (参考情報) |
judge3_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
コンパイルメッセージ
warning: unused import: `std::collections::BinaryHeap`
--> src/main.rs:9:5
|
9 | use std::collections::BinaryHeap;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
= note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
warning: value assigned to `sum` is never read
--> src/main.rs:26:23
|
26 | let mut sum:f64 = 0.;
| ^^ this value is reassigned later and never used
27 | for _ in 0..56 {
28 | sum = l.iter().map(|&e| (e/ans).trunc()).fold(0.,|sum,e| sum+e);
| --------------------------------------------------------------- `sum` is overwritten here before the previous value is read
|
= note: `#[warn(unused_assignments)]` (part of `#[warn(unused)]`) on by default
ソースコード
/*
* Author: srtry
* Created: 2025-12-06T13:05:26+09:00
* Coding: utf-8-unix
*/
use proconio::input;
use std::io::{stdout,Write,BufWriter};
use std::collections::BinaryHeap;
fn main() {
input!{
n:usize,
l:[f64;n],
k:f64
}
let out = stdout();
let mut out = BufWriter::new(out.lock());
// K本の棒を作ることができる長さを二分探索で出す
let mut right:f64 = l.iter().fold(0.0/0.0, |m,v| v.max(m));
let mut left:f64 = 0.;
// let mut left:f64 = u32::MIN as f64;
let mut ans:f64 = (right + left)/2.;
let mut sum:f64 = 0.;
for _ in 0..56 {
sum = l.iter().map(|&e| (e/ans).trunc()).fold(0.,|sum,e| sum+e);
if sum<k {
right=ans;
} else {
left=ans;
}
ans = (left+right)/2.;
}
// write!(out, "{}", sum).unwrap();
write!(out, "{}", ans).unwrap();
}