結果

問題 No.5 数字のブロック
ユーザー yo-kondoyo-kondo
提出日時 2018-12-31 23:56:12
言語 Rust
(1.77.0)
結果
AC  
実行時間 2 ms / 5,000 ms
コード長 1,790 bytes
コンパイル時間 13,489 ms
コンパイル使用メモリ 379,768 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-04-29 10:09:13
合計ジャッジ時間 14,778 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,248 KB
testcase_01 AC 1 ms
5,248 KB
testcase_02 AC 0 ms
5,376 KB
testcase_03 AC 1 ms
5,376 KB
testcase_04 AC 1 ms
5,376 KB
testcase_05 AC 2 ms
5,376 KB
testcase_06 AC 2 ms
5,376 KB
testcase_07 AC 1 ms
5,376 KB
testcase_08 AC 1 ms
5,376 KB
testcase_09 AC 1 ms
5,376 KB
testcase_10 AC 2 ms
5,376 KB
testcase_11 AC 1 ms
5,376 KB
testcase_12 AC 1 ms
5,376 KB
testcase_13 AC 2 ms
5,376 KB
testcase_14 AC 1 ms
5,376 KB
testcase_15 AC 1 ms
5,376 KB
testcase_16 AC 1 ms
5,376 KB
testcase_17 AC 2 ms
5,376 KB
testcase_18 AC 2 ms
5,376 KB
testcase_19 AC 2 ms
5,376 KB
testcase_20 AC 1 ms
5,376 KB
testcase_21 AC 1 ms
5,376 KB
testcase_22 AC 1 ms
5,376 KB
testcase_23 AC 1 ms
5,376 KB
testcase_24 AC 1 ms
5,376 KB
testcase_25 AC 1 ms
5,376 KB
testcase_26 AC 1 ms
5,376 KB
testcase_27 AC 1 ms
5,376 KB
testcase_28 AC 1 ms
5,376 KB
testcase_29 AC 1 ms
5,376 KB
testcase_30 AC 1 ms
5,376 KB
testcase_31 AC 1 ms
5,376 KB
testcase_32 AC 1 ms
5,376 KB
testcase_33 AC 1 ms
5,376 KB
権限があれば一括ダウンロードができます
コンパイルメッセージ
warning: field `block_num` is never read
  --> src/main.rs:15:5
   |
11 | struct InputData {
   |        --------- field in this struct
...
15 |     block_num: i32,
   |     ^^^^^^^^^
   |
   = note: `InputData` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
   = note: `#[warn(dead_code)]` on by default

ソースコード

diff #

//! No.5 数字のブロック
//! https://yukicoder.me/problems/no/5

use std::io;

#[cfg(test)]
mod test;

/// 入力データ
#[derive(Debug)]
struct InputData {
    /// 大きな箱の幅
    box_width: i32,
    /// ブロックの数
    block_num: i32,
    /// 各ブロックの幅
    block_width: Vec<i32>,
}

/// エントリポイント
fn main() {
    let input = input_data();
    println!("{}", calc_in_boxes(input));
}

/// 箱に入るブロックの数を計算して返します。
fn calc_in_boxes(input: InputData) -> i32 {
    // block_widthを昇順にソート
    let mut blocks = input.block_width;
    blocks.sort();

    //
    let mut num = 0;
    let mut remaining_width = input.box_width;

    // 小さいブロックから数えて、箱の幅を超えたら終了
    for b in &blocks {
        if remaining_width >= *b {
            remaining_width -= *b;
            num += 1;
        } else {
            break;
        }
    }

    num
}

/// 標準入力から以下の形式で取得した情報を構造体に設定します。
/// ```
/// 16
/// 3
/// 10 5 7
/// ```
fn input_data() -> InputData {

    // 1行目
    let mut box_width = String::new();
    io::stdin().read_line(&mut box_width).unwrap();
    let box_width: i32 = box_width.trim().parse().unwrap();

    // 2行目
    let mut block_num = String::new();
    io::stdin().read_line(&mut block_num).unwrap();
    let block_num: i32 = block_num.trim().parse().unwrap();

    // 3行目
    let mut block_width = String::new();
    io::stdin().read_line(&mut block_width).unwrap();
    let block_width = block_width
        .trim().split_whitespace()
        .map(|e| e.parse().ok().unwrap()).collect();

    InputData {
        box_width,
        block_num,
        block_width,
    }
}
0