結果
| 問題 |
No.942 プレゼント配り
|
| コンテスト | |
| ユーザー |
noisy_noimin
|
| 提出日時 | 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");
}
}
noisy_noimin