結果
| 問題 | No.67 よくある棒を切る問題 (1) |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2025-12-07 04:04:52 |
| 言語 | Rust (1.83.0 + proconio) |
| 結果 |
AC
|
| 実行時間 | 50 ms / 5,000 ms |
| コード長 | 928 bytes |
| 記録 | |
| コンパイル時間 | 9,834 ms |
| コンパイル使用メモリ | 400,556 KB |
| 実行使用メモリ | 7,848 KB |
| 最終ジャッジ日時 | 2025-12-07 04:05:08 |
| 合計ジャッジ時間 | 12,612 ms |
|
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| other | AC * 30 |
コンパイルメッセージ
warning: unused import: `std::collections::BinaryHeap` --> src/main.rs:9:5 | 9 | use std::collections::BinaryHeap; | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | = note: `#[warn(unused_imports)]` on by default warning: value assigned to `sum` is never read --> src/main.rs:26:13 | 26 | let mut sum:f64 = 0.; | ^^^ | = help: maybe it is overwritten before being read? = note: `#[warn(unused_assignments)]` 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();
}