結果
問題 | No.2561 みんな大好きmod 998 |
ユーザー | 👑 KA37RI |
提出日時 | 2023-12-02 15:30:46 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 62 ms / 4,000 ms |
コード長 | 1,019 bytes |
コンパイル時間 | 15,254 ms |
コンパイル使用メモリ | 377,804 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-09-26 18:49:28 |
合計ジャッジ時間 | 14,404 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge3 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 3 |
other | AC * 44 |
ソースコード
fn main() { let nk = input(); let mut nk = nk.split(' '); let n: usize = nk.next().unwrap().parse().unwrap(); let k: usize = nk.next().unwrap().parse().unwrap(); let a = input(); let a: Vec<usize> = a.split(' ').map(|ai| ai.parse().unwrap()).collect(); let mut stack = Vec::new(); let mut s = vec![0; k]; let mut ans = 0usize; for p in 0..n { stack.push((false, 0, 0)); stack.push((true, 0, p)); } while let Some((cf, ci, cx)) = stack.pop() { if cf { s[ci] = cx; if ci == k - 1 { let sm: usize = s.iter().map(|&xi| a[xi]).sum(); if sm % 998244353 <= sm % 998 { ans += 1; } }else { for nx in cx+1..n { stack.push((false, ci + 1, 0)); stack.push((true, ci + 1, nx)); } } }else { s[ci] = 0; } } println!("{}", ans % 998); } fn input() -> String { let mut buffer = String::new(); std::io::stdin().read_line(&mut buffer).unwrap(); return buffer.trim().to_string(); }