結果

問題 No.3014 岩井満足性問題
ユーザー The_Bouningeeeen
提出日時 2025-01-25 13:34:20
言語 Rust
(1.83.0 + proconio)
結果
MLE  
実行時間 -
コード長 1,213 bytes
コンパイル時間 22,446 ms
コンパイル使用メモリ 383,272 KB
実行使用メモリ 831,060 KB
最終ジャッジ日時 2025-01-25 22:51:51
合計ジャッジ時間 48,680 ms
ジャッジサーバーID
(参考情報)
judge4 / judge6
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 2 MLE * 1
other AC * 8 TLE * 7 MLE * 3
権限があれば一括ダウンロードができます

ソースコード

diff #

use proconio::input;
use std::collections::HashMap;

fn main() {
    input! {
        n: usize,
        d: usize,
        k: usize,
        a: [isize; n],
        c: [usize; n],
    }

    let mut dp = vec![vec![HashMap::new(); d + 1]; n];
    dp[0][0].insert(0, 0);
    dp[0][1].insert(c[0], a[0]);
    let mut ans = isize::MIN;
    if c[0] >= k {
        ans = ans.max(a[0]);
    }

    for i in 0..n - 1 {
        for j in 0..d {
            for (l, old_val) in dp[i][j].clone() {
                if let Some(val) = dp[i + 1][j].get_mut(&l) {
                    *val = (*val).max(old_val);
                } else {
                    dp[i + 1][j].insert(l, old_val);
                }

                let new_val = old_val + a[i + 1];
                if let Some(val) = dp[i + 1][j + 1].get_mut(&(l + c[i + 1])) {
                    *val = (*val).max(new_val);
                } else {
                    dp[i + 1][j + 1].insert(l + c[i + 1], new_val);
                }

                if l + c[i + 1] >= k {
                    ans = ans.max(new_val);
                }
            }
        }
    }

    if ans == isize::MIN {
        println!("No");
    } else {
        println!("{}", ans);
    }
}
0