Submission #35214352


Source Code Expand

use proconio::input;

macro_rules! chmax {
    ($max_v: expr, $v: expr) => {
        if $v > $max_v {
            $max_v = $v;
            true
        } else {
            false
        }
    };
}

fn main() {
    input! {
        n: usize,
        w: usize,
        wv: [(usize, usize); n],
    };
    let w_1 = wv[0].0;
    let mut dp = vec![vec![vec![0_usize; 4 * n + 1]; n + 1]; n + 1];
    for (i, (w_i, v_i)) in wv.iter().copied().enumerate() {
        for j in 0..n {
            for k in 0..4 * n {
                chmax!(dp[i + 1][j][k], dp[i][j][k]);
                if (j + 1) * w_1 + k + (w_i - w_1) <= w && k + (w_i - w_1) <= 4 * n {
                    chmax!(dp[i + 1][j + 1][k + (w_i - w_1)], dp[i][j][k] + v_i);
                }
            }
        }
    }
    let mut ans = 0_usize;
    for j in 0..=n {
        for k in 0..4 * n {
            ans = ans.max(dp[n][j][k]);
        }
    }
    println!("{}", ans);
}

Submission Info

Submission Time
Task D - Simple Knapsack
User bouzuya
Language Rust (1.42.0)
Score 400
Code Size 937 Byte
Status AC
Exec Time 53 ms
Memory 34284 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 400 / 400
Status
AC × 4
AC × 16
Set Name Test Cases
Sample example0, example1, example2, example3
All antigreedy0, antigreedy1, antigreedy2, example0, example1, example2, example3, quarter0, quarter1, quarter2, rand0, rand1, rand2, smallw0, smallw1, smallw2
Case Name Status Exec Time Memory
antigreedy0 AC 53 ms 34192 KiB
antigreedy1 AC 50 ms 34148 KiB
antigreedy2 AC 41 ms 34152 KiB
example0 AC 2 ms 2196 KiB
example1 AC 2 ms 1960 KiB
example2 AC 2 ms 2140 KiB
example3 AC 2 ms 1984 KiB
quarter0 AC 50 ms 34196 KiB
quarter1 AC 42 ms 34220 KiB
quarter2 AC 42 ms 34124 KiB
rand0 AC 2 ms 2172 KiB
rand1 AC 11 ms 6336 KiB
rand2 AC 2 ms 2488 KiB
smallw0 AC 39 ms 34284 KiB
smallw1 AC 40 ms 34188 KiB
smallw2 AC 39 ms 34196 KiB