提出 #43974852


ソースコード 拡げる

use proconio::input;
use std::iter;

fn main() {
    input! {
        (n, w): (usize, usize),
        input: [(usize, usize); n],
    }

    let res = input.iter().fold(
        iter::once(Some(0))
            .chain(iter::repeat(None).take(w))
            .collect::<Vec<_>>(),
        |vec, (w, v)| {
            vec.iter()
                .enumerate()
                .map(|(i, &acc)| {
                    let v1 = vec.get(i - *w).cloned().flatten().map(|v1| v1 + *v);
                    [v1, acc].iter().flatten().cloned().max()
                })
                .collect::<Vec<_>>()
        },
    );

    println!("{}", res.iter().flatten().cloned().max().unwrap());
}

提出情報

提出日時
問題 D - Knapsack 1
ユーザ toyboot4e
言語 Rust (1.42.0)
得点 100
コード長 704 Byte
結果 AC
実行時間 59 ms
メモリ 5208 KiB

ジャッジ結果

セット名 All
得点 / 配点 100 / 100
結果
AC × 13
セット名 テストケース
All 0_00, 0_01, 0_02, 1_00, 1_01, 1_02, 1_03, 1_04, 1_05, 1_06, 1_07, 1_08, 1_09
ケース名 結果 実行時間 メモリ
0_00 AC 5 ms 2144 KiB
0_01 AC 1 ms 2068 KiB
0_02 AC 2 ms 2036 KiB
1_00 AC 5 ms 5116 KiB
1_01 AC 42 ms 5072 KiB
1_02 AC 48 ms 4992 KiB
1_03 AC 53 ms 4992 KiB
1_04 AC 58 ms 5132 KiB
1_05 AC 57 ms 5168 KiB
1_06 AC 59 ms 5148 KiB
1_07 AC 54 ms 5064 KiB
1_08 AC 51 ms 5188 KiB
1_09 AC 47 ms 5208 KiB