結果

問題 No.3041 非対称じゃんけん
ユーザー NakLon131
提出日時 2025-02-28 23:20:04
言語 Rust
(1.83.0 + proconio)
結果
MLE  
実行時間 -
コード長 1,209 bytes
コンパイル時間 10,930 ms
コンパイル使用メモリ 403,472 KB
実行使用メモリ 797,568 KB
最終ジャッジ日時 2025-02-28 23:20:25
合計ジャッジ時間 18,014 ms
ジャッジサーバーID
(参考情報)
judge4 / judge2
このコードへのチャレンジ
(要ログイン)
ファイルパターン 結果
sample AC * 1
other AC * 20 MLE * 1 -- * 9
権限があれば一括ダウンロードができます

ソースコード

diff #

fn main() {
    input!{
		n: usize, f: usize,
		a: [usize; n],
		b: [usize; n],
		c: [usize; n],
	}

	let max_f = 3*n*f;

	// dp[i番目まで見た][指の合計本数j] = true/false
	let mut dp = vec![vec![false; max_f+1]; n+1];
	dp[0][0] = true;

	// もらうDP
	for i in 1..=n {
		let mut ans = 0;
		for next in 0..=max_f {
			if next >= a[i-1] {
				dp[i][next] |= dp[i-1][next - a[i-1]];
			}
			if next >= b[i-1] {
				dp[i][next] |= dp[i-1][next - b[i-1]];
			}
			if next >= c[i-1] {
				dp[i][next] |= dp[i-1][next - c[i-1]];
			}
		}
		for j in 0..=max_f {
			if dp[i][j] { ans += 1;}
		}
		println!("{}", ans);
	}

}

// const MOD17: usize = 1000000007;
// const MOD93: usize = 998244353;
// const INF: usize = 1 << 60;
// let dx = vec![!0, 0, 1, 0]; // 上左下右
// let dy = vec![0, !0, 0, 1]; // 上左下右
// let d = vec!{(!0, 0), (0, !0), (1, 0), (0, 1)}; // 上左下右

#[allow(unused)]
use proconio::{input, marker::Chars, marker::Usize1};

#[allow(unused)]
use std::{
	mem::swap,
	cmp::min, cmp::max,
	cmp::Reverse,
	collections::HashSet, collections::BTreeSet,
	collections::HashMap, collections::BTreeMap,
	collections::BinaryHeap,
	collections::VecDeque,
	iter::FromIterator,
};
0