結果
問題 | No.2410 Nine Numbers |
ユーザー | so-hey |
提出日時 | 2023-08-12 01:03:22 |
言語 | Rust (1.77.0 + proconio) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 1,515 bytes |
コンパイル時間 | 12,905 ms |
コンパイル使用メモリ | 382,256 KB |
実行使用メモリ | 6,820 KB |
最終ジャッジ日時 | 2024-11-18 20:49:05 |
合計ジャッジ時間 | 13,912 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge5 |
(要ログイン)
ソースコード
#![allow(dead_code)] #![allow(unused_imports)] #![allow(non_snake_case)] #![allow(unused_variables)] const UINF: usize = std::usize::MAX; const IINF: isize = std::isize::MAX; const UMOD: usize = 998244353; //const UMOD: usize = 1000000007; const IMOD: isize = 998244353; //const IMOD: isize = 1000000007; fn yn(flag: bool) { if flag { println!("Yes") } else { println!("No") } } fn YN(flag: bool) { if flag { println!("YES") } else { println!("NO") } } fn print_vec<T: std::fmt::Display>(a: &Vec<T>, sep: &str) { if a.is_empty() { println!("") } else { let dst: Vec<String> = a.iter().map(|x| x.to_string()).collect(); println!("{}", dst.join(sep)); } } fn solve(s: usize) { let mut dp = vec![vec![false; 9001]; 9]; dp[0][0] = true; let mut ans = Vec::new(); ans.push(s); dp[0][s] = true; while ans.len() < 9 { let i = ans.len(); let last = *ans.last().unwrap(); let mut a = 0; for j in 0..=9000 { if !dp[i-1][j] { a = 2 * j - 1; break; } } ans.push(a); for j in 0..=9000 { if j >= a { dp[i][j-a] |= dp[i-1][j]; } else if a - j <= 9000 { dp[i][a-j] |= dp[i-1][j]; } dp[i][j] |= dp[i-1][j]; if j + a <= 9000 { dp[i][j+a] |= dp[i-1][j]; } } } print_vec(&ans, " "); } fn main () { solve(1); }