結果
問題 |
No.942 プレゼント配り
|
ユーザー |
![]() |
提出日時 | 2019-12-07 21:32:39 |
言語 | Rust (1.83.0 + proconio) |
結果 |
WA
|
実行時間 | - |
コード長 | 1,497 bytes |
コンパイル時間 | 18,732 ms |
コンパイル使用メモリ | 378,772 KB |
実行使用メモリ | 12,928 KB |
最終ジャッジ日時 | 2024-12-26 09:57:55 |
合計ジャッジ時間 | 22,024 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 9 WA * 9 |
ソースコード
use std::io::*; use std::str::FromStr; fn read<T: FromStr>() -> T { let stdin = stdin(); let stdin = stdin.lock(); let token: String = stdin .bytes() .map(|c| c.expect("failed to read char") as char) .skip_while(|c| c.is_whitespace()) .take_while(|c| !c.is_whitespace()) .collect(); token.parse().ok().expect("failed to parse token") } fn main() { let n: usize = read(); let k: usize = read(); let m = n / k; // 一人当たりのプレゼントの数 let mut ans = vec![vec![0; m]; k]; if ((k+1) * m) % k != 0 { println!("No"); return; } if m % 2 == 0 { for i in 0..m { for j in 0..k { if i % 2 == 0 { ans[j][i] = (i+1) * k - j } else { ans[j][i] = i * k + j + 1 } } } } else { let mut d = 0; for dd in 1..k { if (dd * m) % k == 0 { d = dd; break; } } if d == 0 { println!("No"); return; } for i in 0..m { let diff = (i * d) % k; for j in 0..k { ans[(j+diff)%k][i] = i * k + j + 1; } } } println!("Yes"); for i in 0..k { print!("{}", ans[i][0]); for j in 1..m { print!(" {}", ans[i][j]); } print!("\n"); } }