結果
問題 | No.401 数字の渦巻き |
ユーザー |
![]() |
提出日時 | 2022-02-19 20:16:03 |
言語 | Rust (1.83.0 + proconio) |
結果 |
AC
|
実行時間 | 1 ms / 2,000 ms |
コード長 | 2,175 bytes |
コンパイル時間 | 12,814 ms |
コンパイル使用メモリ | 378,968 KB |
実行使用メモリ | 5,376 KB |
最終ジャッジ日時 | 2024-06-29 10:39:35 |
合計ジャッジ時間 | 12,224 ms |
ジャッジサーバーID (参考情報) |
judge1 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 30 |
ソースコード
fn main() {input!{n: usize,}let mut res = vec![vec![0; n + 2]; n + 2];for i in 0..(n + 2) {res[0][i] = 1000;res[n + 1][i] = 1000;res[i][0] = 1000;res[i][n + 1] = 1000;}let mut pos = (1_usize, 1_usize);for num in 1..=(n * n) {let (i, j) = pos;res[i][j] = num;if res[i][j + 1] == 0 && res[i][j - 1] > 0 && res [i - 1][j] > 0 {pos.1 += 1;} else if res[i + 1][j] == 0 && res[i][j + 1] > 0 && res[i - 1][j] > 0 {pos.0 += 1;} else if res[i][j - 1] == 0 && res[i][j + 1] > 0 && res[i + 1][j] > 0 {pos.1 -= 1;} else if res[i - 1][j] == 0 && res[i][j - 1] > 0 && res[i + 1][j] > 0 {pos.0 -= 1;}}for i in 1..(1 + n) {for j in 1..(1 + n) {print!("{:03} ", res[i][j]);}println!();}}#[macro_export]macro_rules! input {(source = $s:expr, $($r:tt)*) => {let mut iter = $s.split_whitespace();input_inner!{iter, $($r)*}};($($r:tt)*) => {#[allow(unused_mut)]let mut s = {use std::io::Read;let mut s = String::new();std::io::stdin().read_to_string(&mut s).unwrap();s};let mut iter = s.split_whitespace();input_inner!{iter, $($r)*}};}#[macro_export]macro_rules! input_inner {($iter:expr) => {};($iter:expr, ) => {};($iter:expr, $var:ident : $t:tt $($r:tt)*) => {let $var = read_value!($iter, $t);input_inner!{$iter $($r)*}};}#[macro_export]macro_rules! read_value {($iter:expr, ( $($t:tt),* )) => {( $(read_value!($iter, $t)),* )};($iter:expr, [ $t:tt ; $len:expr ]) => {(0..$len).map(|_| read_value!($iter, $t)).collect::<Vec<_>>()};($iter:expr, chars) => {read_value!($iter, String).chars().collect::<Vec<char>>()};($iter:expr, usize1) => {read_value!($iter, usize) - 1};($iter:expr, $t:ty) => {$iter.next().unwrap().parse::<$t>().expect("Parse error")};}